Abstract
This document provides the code for exploring how the Japan-returned students were discussed in the Chinese periodical Dongfang zazhi 東方雜誌 (Eastern Miscellany) from 1905 to 1948.
In this paper, we used Dongfang zazhi 東方雜誌 (The Eastern Miscellany)—a major intellectual journal published by the Commercial Press from 1904 to 1948 — as our primary source to examine the debates surrounding students returning from Japan during the late Qing and Republican eras. Our analysis is based on the full-text, semantically enriched version of this journal, available through the Modern China Textual Database. Using this resource, we conducted a corpus-based analysis with the HistText R package developed by the ENP-China project for analyzing large collections of historical Chinese texts.
Simple keyword search (152 documents)
library(histtext)
liuri <- search_documents('"留日"', corpus="dongfangzz")
Pre-trained embeddings are available at : https://sharedocs.huma-num.fr/#/2547/8997/6-HistText/Embeddings
library("fastTextR")
model <- fasttext()
model$load("~/embeddings/toastynews.bin") # load embedding
nearest_neighbors <- ft_nearest_neighbors(model,"留日", k = 30L) # find neighbors
nearest_neighbors <- names(nearest_neighbors)
# Add selected terms to the query (254 results)
liuri_exp <- search_documents('"留日" | "旅日" | "遊日"', corpus="dongfangzz")
Inspect keywords in context using concordance (built-in function included in HistText):
liuri_conc <- search_concordance('"留日" | "旅日" | "遊日"', corpus="dongfangzz") # 335 occurrences
liuri_conc
Select only documents that refer to students (107 documents remain):
# Create a vector with relevant expressions for filtering (study, youth)
xue <- c("學", "靑年")
xue_vec <- paste(xue, sep = "", collapse = "|")
# Search the vector within the target fields (After, Before, Title)
library(dplyr)
liuri_conc <- liuri_conc %>% mutate(xue = str_extract(After, xue_vec))
liuri_conc <- liuri_conc %>% mutate(xue2 = str_extract(Before, xue_vec))
liuri_conc <- liuri_conc %>% mutate(xue3 = str_extract(Title, xue_vec))
liuri_conc <- liuri_conc %>% mutate(match2 = paste0(xue, xue2, xue3))
# Eliminate non matches
liuri_conc_filtered <- liuri_conc %>% filter(!match2 == "NANANA") # 136 occurrences
# Export list of documents for manual checking
write.csv(liuri_conc_filtered, "liuri_conc_to_check.csv")
# Re-import list of manually filtered documents (107)
library(readr)
liuri_filtered <- read_csv("~/data/liuri_filtered.csv")
liuri_meta <- get_search_fields_content(liuri_filtered, corpus="dongfangzz",
search_fields=c(list_search_fields("dongfangzz"),
list_filter_fields("dongfangzz")))
# Extract year of publication (first four digits of document Id)
liuri_meta <- liuri_meta %>%
mutate(Year = str_extract(DocId, "\\d{4}")) %>%
mutate(Year = as.numeric(Year))
liuri_meta <- liuri_meta %>% relocate(Year, .after = DocId)
liuri_meta