如何检测语料库中的外来词?
How detect foreign words in Corpus?
假设我正在使用 tm
包解析英语语料库,并且我执行通常的清理步骤。
library(tm)
data("crude")
corpus <- Corpus(crude)
corpus <- tm_map(corpus, content_transformer(tolower))
corpus <- tm_map(corpus, content_transformer(removeWords)) stopwords("english"))
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, stemDocument)
corpus <- tm_map(corpus, PlainTextDocument)
# text matrices
tdm <- TermDocumentMatrix(corpus)
dtm<- DocumentTermMatrix(corpus)
如何识别用不同于语料库语言的语言书写的单词? Python here也面临类似的问题,但我的研究并没有产生有趣的结果。
这不是一个完整的解决方案,但我觉得它可能会有所帮助。我最近不得不做一些类似的事情,我不得不从带有汉字的语料库中删除单词。我最终使用带有正则表达式的自定义转换来删除其中包含非 a-z 0-9 字符的任何内容。
corpus <- tm_map(corpus, content_transformer(function(s){
gsub(pattern = '[^a-zA-Z0-9\s]+',
x = s,
replacement = " ",
ignore.case = TRUE,
perl = TRUE)
}))
例如,如果那里有一个中文单词,它就会被删除。
gsub(pattern = '[^a-zA-Z0-9\s]+',
x = 'English 象形字 Chinese',
replacement = "",
ignore.case = TRUE,
perl = TRUE)
输出:"English Chinese"
如果您尝试从西班牙语等语言中删除单词,这会比较棘手,因为有些字母有重音,而有些则没有。例如,这并不完全有效,但也许是一个开始。
gsub(pattern = '[a-zA-Z0-9]+[^a-zA-Z0-9\s]+[a-zA-Z0-9]+',
x = 'El jalapeño es caliente',
replacement = "",
ignore.case = TRUE,
perl = TRUE)
输出:"El es caliente"
希望对您有所帮助!
假设我正在使用 tm
包解析英语语料库,并且我执行通常的清理步骤。
library(tm)
data("crude")
corpus <- Corpus(crude)
corpus <- tm_map(corpus, content_transformer(tolower))
corpus <- tm_map(corpus, content_transformer(removeWords)) stopwords("english"))
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, stemDocument)
corpus <- tm_map(corpus, PlainTextDocument)
# text matrices
tdm <- TermDocumentMatrix(corpus)
dtm<- DocumentTermMatrix(corpus)
如何识别用不同于语料库语言的语言书写的单词? Python here也面临类似的问题,但我的研究并没有产生有趣的结果。
这不是一个完整的解决方案,但我觉得它可能会有所帮助。我最近不得不做一些类似的事情,我不得不从带有汉字的语料库中删除单词。我最终使用带有正则表达式的自定义转换来删除其中包含非 a-z 0-9 字符的任何内容。
corpus <- tm_map(corpus, content_transformer(function(s){
gsub(pattern = '[^a-zA-Z0-9\s]+',
x = s,
replacement = " ",
ignore.case = TRUE,
perl = TRUE)
}))
例如,如果那里有一个中文单词,它就会被删除。
gsub(pattern = '[^a-zA-Z0-9\s]+',
x = 'English 象形字 Chinese',
replacement = "",
ignore.case = TRUE,
perl = TRUE)
输出:"English Chinese"
如果您尝试从西班牙语等语言中删除单词,这会比较棘手,因为有些字母有重音,而有些则没有。例如,这并不完全有效,但也许是一个开始。
gsub(pattern = '[a-zA-Z0-9]+[^a-zA-Z0-9\s]+[a-zA-Z0-9]+',
x = 'El jalapeño es caliente',
replacement = "",
ignore.case = TRUE,
perl = TRUE)
输出:"El es caliente"
希望对您有所帮助!