我试图在语料库上执行lemmatization
,使用函数lemmatize_strings()
作为tm_map()
包的tm
的参数。
但是我想使用我自己的字典(“lexico” - 第一列用小写的完整单词形式,而第二列有相应的替换引理)。
我试着用:
corpus<-tm_map(corpus, lemmatize_strings)
但是没有用......当我使用时:
lemmatize_strings(corpus[[1]], dictionary = lexico)
我没有问题!
如何将我的词典“lexico”放在函数tm_map()中?
对不起这个问题,这是我第一次尝试进行一些文本挖掘,年仅48岁。
为了更容易理解,我的语料库由2000份文件组成;第一份文件摘录:
corpus[[1]][[1]]
[9] "..."
[10] "Nos últimos dias da passada legislatura, a maioria de direita aprovou duas leis que significam enormes recuos nos direitos das cidadãs do país. Fizeram tábua rasa do pronunciamento das cidadãs e cidadãos do país em referendo, optando por humilhar e tentar culpabilizar as mulheres que abortam por sua livre escolha. Estas duas leis são a Lei n.º 134/2015 e a Lei n.º 136/2015, de setembro. A primeira prevê o pagamento de taxas moderadoras na interrupção de gravidez quando for realizada, por opção da mulher, nas primeiras 10 semanas de gravidez. A segunda representa a primeira alteração à Lei n.º 16/2007, de 17 de abril, sobre exclusão de ilicitude nos casos de interrupção voluntária da gravidez."
然后使用此配置处理字典文件(lexico):
lexico[1:10,]
termo lema pos.tag
1 aa a NCMP000
2 aais aal NCMP000
3 aal aal NCMS000
4 aaleniano aaleniano NCMS000
5 aalenianos aaleniano NCMP000
6 ab-rogação ab-rogação NCFS000
7 ab-rogações ab-rogação NCFP000
8 ab-rogamento ab-rogamento NCMS000
9 ab-rogamentos ab-rogamento NCMP000
10 ab-rogáveis ab-rogável AQ0CP0
当我使用函数lemmatize_strings(corpus[[1]], dictionary = lexico)
时,它可以正常工作,并使用我的字典中的词条对nom1语法进行demati化。
我遇到的问题是这个功能:
> corpus<-tm_map(corpus, lemmatize_strings, dictionary = lexico)
Warning messages:
1: In stringi::stri_extract_all_regex(x, numreg) :
argument is not an atomic vector; coercing
2: In stringi::stri_extract_all_regex(x, numreg) :
argument is not an atomic vector; coercing
> corpus[[1]][[1]]
[1] ""
这只是破坏了我在语料库中的所有文件
> corpus
<<VCorpus>>
Metadata: corpus specific: 0, document level (indexed): 0
Content: documents: 2000
在此先感谢您的回复!
例如,您可以使用quanteda
包:
library("quanteda")
text <- "This is a test sentence. We can lemmatize it using quanteda."
dict <- data.frame(
word = c("is", "using"),
lemma = c("be", "use"),
stringsAsFactors = FALSE
)
toks <- tokens(text, remove_punct = TRUE)
toks_lemma <- tokens_replace(toks,
pattern = dict$word,
replacement = dict$lemma,
case_insensitive = TRUE,
valuetype = "fixed")
toks_lemma
tokens from 1 document.
text1 :
[1] "This" "be" "a" "test" "sentence" "We" "can" "lemmatize"
[9] "it" "use" "quanteda"
尽管名称主要用于词形还原,但功能非常快。