Comments and more Config
This commit is contained in:
parent
bc9e2d06ac
commit
6a8966a263
4 changed files with 53 additions and 21 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
.Rproj.user
|
||||||
|
.Rhistory
|
||||||
|
.RData
|
||||||
|
.Ruserdata
|
||||||
|
*.xlsx
|
||||||
|
|
@ -7,13 +7,20 @@ PFAD_OUT <- "data/Output/"
|
||||||
PFAD_DB_OUT <- "data/Database/"
|
PFAD_DB_OUT <- "data/Database/"
|
||||||
|
|
||||||
#Datei in der ersetzt werden soll
|
#Datei in der ersetzt werden soll
|
||||||
FILENAME_EXCEL <- "GC3D_Limits_ref.xlsx"
|
FILENAME_EXCEL <- "project vocabulary_BB.xlsx"
|
||||||
|
|
||||||
#Spaltennummer in denen ersetzt werden soll im Excel
|
#Spaltennummer in denen ersetzt werden soll im Excel
|
||||||
SPALTEN <- c(2, 3, 4, 5, 6)
|
SPALTEN <- c(10, 11, 12, 13)
|
||||||
|
|
||||||
#Spaltennummer mit der verglichen wird aus Datenbank (citations)
|
#Spaltennummer mit der verglichen wird aus Datenbank (citations)
|
||||||
INHALTE_DB <- 3
|
INHALTE_DB <- 3
|
||||||
|
|
||||||
#Spaltennummer der Inhalte die eingesetzt werden soll (uris)
|
#Spaltennummer der Inhalte die eingesetzt werden soll (uris)
|
||||||
ID <- 1
|
ID <- 1
|
||||||
|
|
||||||
|
#Zeichenlänge unter der eventuell Zitate automatisch verworfen werden
|
||||||
|
THRESHOLD <- 20
|
||||||
|
|
||||||
|
#Match-Variablen, empfohlen wird das Jahr bei fast 1 zu lassen, mit der anderen kann je nach Datenqualität experimentiert werden
|
||||||
|
MATCH_ALL <- 0.8
|
||||||
|
MATCH_YEAR <- 0.99
|
||||||
|
|
@ -3,12 +3,11 @@ library("writexl")
|
||||||
library("dplyr")
|
library("dplyr")
|
||||||
library("xlsx")
|
library("xlsx")
|
||||||
library("stringi")
|
library("stringi")
|
||||||
library("SPARQL")
|
|
||||||
library("stringr")
|
library("stringr")
|
||||||
library("tictoc")
|
library("tictoc")
|
||||||
library("rlang")
|
library("rlang")
|
||||||
|
|
||||||
#Funktionen einbinden
|
#Funktionen & Konfiguration einbinden
|
||||||
source("sparql.R")
|
source("sparql.R")
|
||||||
source("config/config.R")
|
source("config/config.R")
|
||||||
|
|
||||||
|
|
@ -16,46 +15,62 @@ source("config/config.R")
|
||||||
### Einlesen ###
|
### Einlesen ###
|
||||||
inDB <- get_current_geoera_lit_db()
|
inDB <- get_current_geoera_lit_db()
|
||||||
|
|
||||||
to_replace_original <- read_excel(paste(PFAD_EXCEL, FILENAME_EXCEL, sep=""))
|
to_replace_original <- read_excel(paste(PFAD_EXCEL, FILENAME_EXCEL, sep=""), sheet = 1)
|
||||||
to_replace_done <- to_replace_original
|
to_replace_done <- to_replace_original
|
||||||
|
|
||||||
###
|
|
||||||
|
|
||||||
|
#Erste Schleife über den Spaltenvektor aus der Excel
|
||||||
#Schleife über den Spaltenvektor aus der Excel
|
|
||||||
for (spalte_excel in SPALTEN[1]:SPALTEN[length(SPALTEN)]) {
|
for (spalte_excel in SPALTEN[1]:SPALTEN[length(SPALTEN)]) {
|
||||||
|
|
||||||
#Start der Zeitmessung für aktuelle Spalte
|
#Start der Zeitmessung für aktuelle Spalte
|
||||||
tic(paste("starte mit Spalte",spalte_excel))
|
tic(paste("starte mit Spalte",spalte_excel))
|
||||||
|
|
||||||
|
#Zweite Schleife über die jeweiligen Zeilen des Spaltenvektors
|
||||||
for (zeile_excel in 1:nrow(to_replace_original[, spalte_excel])) {
|
for (zeile_excel in 1:nrow(to_replace_original[, spalte_excel])) {
|
||||||
|
|
||||||
|
#Current Excel ist das derzeit behandelte Zitate / Zelle
|
||||||
current_excel <- tolower(to_replace_original[zeile_excel, spalte_excel])
|
current_excel <- tolower(to_replace_original[zeile_excel, spalte_excel])
|
||||||
|
|
||||||
|
#Falls die aktuelle Zelle leer ist wird die nächste Iteration begonnen um Rechenleistung zu sparen
|
||||||
if (is.na(current_excel)) {
|
if (is.na(current_excel)) {
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((nchar(current_excel) < 20)) {
|
#Falls der Inhalt der aktuellen Zelle zu kurz ist wird ebenfalls die nächste Iteration begonnen und der Inhalt gelöscht
|
||||||
|
#der Grund dafür ist, dass es bei sehr wenigen Zeichen (<=THRESHOLD) sehr unwahrscheinlich ist, dass es ein gültiges Vollzitat ist
|
||||||
|
if ((nchar(current_excel) <= THRESHOLD)) {
|
||||||
to_replace_done[zeile_excel, spalte_excel] <- ""
|
to_replace_done[zeile_excel, spalte_excel] <- ""
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#Zerlegt den Zelleninhalt und macht daraus eine Liste "Wort"liste aus alphanumerischen Zeichen, getrennt wird jeweils bei nicht-alphanumischen Zeichen
|
||||||
excel_search_all <- unlist(strsplit(gsub("[^[:alnum:] ]", "", current_excel), " +"))
|
excel_search_all <- unlist(strsplit(gsub("[^[:alnum:] ]", "", current_excel), " +"))
|
||||||
|
#Legt eine Liste aus Zahlen zwischen 1900 & 2099 an, die in der aktuellen Zelle sind. (soll das Jahr der Publizierung finden)
|
||||||
|
#Grund hierfür ist, dass das Jahr ein sehr guter zusätzlicher Indikator ist ob eine Publikation gleich ist
|
||||||
excel_search_numbers <- unlist(str_extract_all(current_excel, "(?:19|20)\\d{2}"))
|
excel_search_numbers <- unlist(str_extract_all(current_excel, "(?:19|20)\\d{2}"))
|
||||||
|
|
||||||
|
#Dritte Schleife die über die Vollzitatzeilen (INHALTE_DB) der Datenbank iteriert
|
||||||
for (zeile_db in 1:nrow(inDB[, INHALTE_DB])) {
|
for (zeile_db in 1:nrow(inDB[, INHALTE_DB])) {
|
||||||
|
|
||||||
|
#aktuell behandeltes Element der Datenbank
|
||||||
current_db <- tolower(inDB[zeile_db,INHALTE_DB])
|
current_db <- tolower(inDB[zeile_db,INHALTE_DB])
|
||||||
|
|
||||||
|
#Zerlegt den Zelleninhalt und macht daraus eine Liste "Wort"liste aus alphanumerischen Zeichen, getrennt wird jeweils bei nicht-alphanumischen Zeichen
|
||||||
db_search_all <- unlist(strsplit(gsub("[^[:alnum:] ]", "", current_db), " +"))
|
db_search_all <- unlist(strsplit(gsub("[^[:alnum:] ]", "", current_db), " +"))
|
||||||
|
|
||||||
|
#Legt eine Liste aus Zahlen zwischen 1900 & 2099 an, die in der aktuellen Zelle sind. (soll das Jahr der Publizierung finden)
|
||||||
db_search_numbers <- unlist(str_extract_all(current_db, "(?:19|20)\\d{2}"))
|
db_search_numbers <- unlist(str_extract_all(current_db, "(?:19|20)\\d{2}"))
|
||||||
|
|
||||||
|
|
||||||
|
#Initialiersierung der Countvariablen
|
||||||
count_all <- 0
|
count_all <- 0
|
||||||
count_numbers <- 0
|
count_numbers <- 0
|
||||||
percent_match_numbers <- 0.1
|
|
||||||
|
|
||||||
|
#Initialiersierung der Matchvariablen
|
||||||
|
percent_match_all <- 0.01
|
||||||
|
percent_match_numbers <- 0.01
|
||||||
|
|
||||||
|
#Vierter(a) Schleifendurchlauf - Eruiert welche Elemente des Excel-Vektors im Datenbankvektors sind und zählt diese
|
||||||
for (k in 1:length(excel_search_all)) {
|
for (k in 1:length(excel_search_all)) {
|
||||||
if (excel_search_all[k] %in% db_search_all) {
|
if (excel_search_all[k] %in% db_search_all) {
|
||||||
|
|
||||||
|
|
@ -63,6 +78,8 @@ for (spalte_excel in SPALTEN[1]:SPALTEN[length(SPALTEN)]) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#Vierter(b) Schleifendurchlauf - Eruiert welche Jahre des Excel-Vektors im Jahres-Datenbankvektors sind und zählt diese
|
||||||
|
#Wird nur durchgeführt wenn beide Vektoren gefüllt sind
|
||||||
if ((length(db_search_numbers) > 0) && (length(excel_search_numbers) > 0)) {
|
if ((length(db_search_numbers) > 0) && (length(excel_search_numbers) > 0)) {
|
||||||
for (l in 1:length(excel_search_numbers)) {
|
for (l in 1:length(excel_search_numbers)) {
|
||||||
if (excel_search_numbers[l] %in% db_search_numbers) {
|
if (excel_search_numbers[l] %in% db_search_numbers) {
|
||||||
|
|
@ -72,24 +89,28 @@ for (spalte_excel in SPALTEN[1]:SPALTEN[length(SPALTEN)]) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#Rechnet aus (in %) wieviele der Wörter gefunden wurden
|
||||||
percent_match_all <- count_all / length(excel_search_all)
|
percent_match_all <- count_all / length(excel_search_all)
|
||||||
|
|
||||||
|
#Rechnet aus (in %) wieviele der Jahre gefunden wurden. Überprüfung ob der Excel-Jahresvektor leer ist, um Division durch 0 zu vermeiden
|
||||||
if (length(excel_search_numbers) > 0) {
|
if (length(excel_search_numbers) > 0) {
|
||||||
percent_match_numbers <- count_numbers / length(excel_search_numbers)
|
percent_match_numbers <- count_numbers / length(excel_search_numbers)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((percent_match_all > 0.80) && (percent_match_numbers > 0.99)) {
|
#Wenn genug Übereinstimmung gefunden wird, wird das Zitat durch die URI aus der Datenbank ersetzt
|
||||||
|
#Beim Jahr muss die Übereinstimmung höher sein, weil es ein sehr guter Indikator für die gleiche Publikation ist
|
||||||
|
if ((percent_match_all >= MATCH_ALL) && (percent_match_numbers > MATCH_YEAR)) {
|
||||||
|
|
||||||
to_replace_done[zeile_excel, spalte_excel] <- str_remove_all(inDB[zeile_db,ID], "[<>]")
|
to_replace_done[zeile_excel, spalte_excel] <- str_remove_all(inDB[zeile_db,ID], "[<>]")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#Ende der Laufzeitberechnung für die erste Schleife (gemacht um abschätzen zu können wie lange ein Durchgang dauert)
|
||||||
toc()
|
toc()
|
||||||
}
|
}
|
||||||
|
|
||||||
toc()
|
#Schreibt die Exceldatei ins Outputverzeichnis
|
||||||
|
|
||||||
pfad_output <- paste(PFAD_OUT, "replaced_", format(Sys.time(), "%Y_%m_%d_%H%M%S"), FILENAME_EXCEL, sep="")
|
pfad_output <- paste(PFAD_OUT, "replaced_", format(Sys.time(), "%Y_%m_%d_%H%M%S"), FILENAME_EXCEL, sep="")
|
||||||
write_xlsx(to_replace_done, pfad_output)
|
write_xlsx(to_replace_done, pfad_output)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,16 @@ library("writexl")
|
||||||
library("tidyverse")
|
library("tidyverse")
|
||||||
library("xlsx")
|
library("xlsx")
|
||||||
|
|
||||||
|
source("config/config.R")
|
||||||
|
|
||||||
|
|
||||||
pfad <- "data/Input/"
|
|
||||||
|
|
||||||
#select all *.xlsx files inside the Input-Folder and put them into a list
|
#select all *.xlsx files inside the Input-Folder and put them into a list
|
||||||
file_list <- list.files(pfad, "*.xlsx")
|
file_list <- list.files(PFAD_EXCEL, "*.xlsx")
|
||||||
|
|
||||||
my_table <- c()
|
my_table <- c()
|
||||||
|
|
||||||
for (file in 1:length(file_list)) {
|
for (file in 1:length(file_list)) {
|
||||||
temp_pfad <- paste(pfad, file_list[file], sep="")
|
temp_pfad <- paste(PFAD_EXCEL, file_list[file], sep="")
|
||||||
my_table[[file]] <- read_excel(temp_pfad)
|
my_table[[file]] <- read_excel(temp_pfad)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -65,7 +64,7 @@ for (i in i:length(distincts$bibliographicCitation)) {
|
||||||
distincts <- unique(distincts)
|
distincts <- unique(distincts)
|
||||||
|
|
||||||
|
|
||||||
distincts <- data.frame(distincts[nchar(distincts$bibliographicCitation) >= 21, ])
|
distincts <- data.frame(distincts[nchar(distincts$bibliographicCitation) >= THRESHOLD, ])
|
||||||
colnames(distincts) <- (c('bibliographicCitation'))
|
colnames(distincts) <- (c('bibliographicCitation'))
|
||||||
|
|
||||||
write_xlsx(distincts, "data/Output/distincts_automated_gc3d.xlsx")
|
write_xlsx(distincts, "data/Output/distincts_automated_gc3d.xlsx")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue