您可以在 Quanteda 中将自定义令牌添加到分词器中文吗?

问题描述

有谁知道在 Quanteda 中对文本进行标记化后是否可以添加自定义标记

我正在尝试对中文文本进行一些分析,但分词器无法将“ASEAN 社区”的缩写识别为单个词(见下文)。

或者,是否有适用于 Quanteda 的中文文本的替代分词器。我一直在使用 Spacyr 包,但目前无法使用。

我做了一些函数来使用“特征共现矩阵”来计算其他单词出现在特定 term 的 5 字窗口中的次数,然后生成这些结果的表格(见下文)。然而,这似乎不适用于“环”这个词


##Function 1 

get_fcm <- function(data) {
  ch_stop <- stopwords("zh",source = "misc")
  corp = corpus(data)
  toks = tokens(corp,remove_punct = TRUE) %>% tokens_remove(ch_stop) 
  fcm = fcm(toks,context = "window")
  return(fcm)
}

##Function 2

convert2df <- function(matrix,term){
  mat_term = matrix[term,]
  df = convert((t(mat_term)),to = "data.frame")
  colnames(df)[1] = "CoTerm"
  colnames(df)[2] = "Freq"
  x = df[order(-df$Freq),]
  return(x)
}

%>% tokens_compound(phrase("东 盟"),concatenator = "") 添加函数 1 的 toks = 行会解决这个问题吗?

解决方法

如果您有特定的列表,您可以对拆分的短语(例如“社区”)进行后处理以在标记后重新加入它们。

> tokens("东盟") %>%
+     tokens_compound(phrase("东 盟"),concatenator = "")
Tokens consisting of 1 document.
text1 :
[1] "东盟"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...