我必须将文字标记为单词。但我不知道文字的语言。我可以成为任何语言。所以我必须构建一个Tokenizer,它将检测文本语言并对其进行标记。如果Tokenizer无法令牌化,那么我将返回一些标记,例如“无法令牌化”。
如果可能,请帮助我标记非空间语言。
答案 0 :(得分:1)
查看textcat
包。它可用于查找文本或文本片段的语言。
它使用启发式方法来确定语言。它做出了明智的猜测。因此,它往往是错误的。当然,错误率取决于数据的性质。您可以通过排除文本可能不会写入的语言来帮助发送文本。
你可以像这样设置它。有关更多详细信息,请阅读文档。
library(textcat)
#%nin% from Hmisc
my.profiles <- ECIMCI_profiles[names(ECIMCI_profiles) %nin% c("afrikaans",
"basque",
"frisian","middle_frisian",
"latin",
"rumantsch",
"spanish",
"welsh",
"catalan",
"hungarian",
"romanian",
"scots",
"swedish")]
# ... process corpus as usual...
# then try to assign a language to each document.
myCorpusCopy <- tm_map(myCorpus, function(x){
#lang <- textcat::textcat(content(x))
lang <- textcat::textcat(content(x), p=my.profiles)
#warning(lang)
meta(x, tag="language") <- lang
x
})
# continue processing..
更新:
你说&#34;我不知道文字的语言。&#34;我认为你必须首先对文本进行分类,以便预测它所写的语言。上面的代码片段以自动方式完成。
标记化将是下一步。 http://stanfordnlp.github.io/CoreNLP/提供中文,英文,法文,德文,西班牙文的语言模型。 我R,你可以用
来打电话library(coreNLP)
initCoreNLP()
### lots of startup messages...
使用coreNLP + addons库编写健壮的R代码是一项非常重要的任务,我无法帮到你。使用单一语言需要一些时间。 从2016年1月(当我玩coreNLP时)阅读我的答案,开始: https://stackoverflow.com/a/34852313/202553