如何用R中的特定字典对语料库进行词形变换?“

问题描述 投票:0回答:1

我试图在语料库上执行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

在此先感谢您的回复!

r text-mining lemmatization
1个回答
0
投票

例如,您可以使用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" 

尽管名称主要用于词形还原,但功能非常快。

© www.soinside.com 2019 - 2024. All rights reserved.