使用Spacy查找俄语的引理(没有模型的那些lang)

时间:2019-02-04 08:15:27

标签: nlp spacy

我已下载Spacy英语模型并使用此代码查找引理。

import spacy
nlp = spacy.load('en')
doc = nlp(u'Two apples')
for token in doc:
    print(token, token.lemma, token.lemma_)

输出:

Two 11711838292424000352 two
apples 8566208034543834098 apple

现在我想对俄语语言做同样的事情。但是Spacy没有俄语的模型。但是我看到他们的GitHub code for Russian language,并且我认为该代码可用于查找引理。

我是Spacy的新手。对于那些没有模型的语言,将需要一个起点。我还注意到,对于某些语言,让我们为URDU说一句,他们提供了look up dictionary来进行词义化。

我想将此内容扩展到所有没有模型的语言。

注意:在上面的代码中,我认为它可以进一步改进,因为就我而言,我只需要引理即可,那么我可以关闭哪些功能以及如何关闭?

4 个答案:

答案 0 :(得分:3)

enter image description here -spaCy最近在Stanford NLP上推出了一个便捷的包装器,因此您可以在spaCy管道中无缝使用StanfordNLP的好东西:

https://github.com/explosion/spacy-stanfordnlp

代码看起来像这样(未经测试):

import stanfordnlp
from spacy_stanfordnlp import StanfordNLPLanguage

snlp = stanfordnlp.Pipeline(lang="ru")
nlp = StanfordNLPLanguage(snlp)

doc = nlp("Привет мир, это Россия")
for token in doc:
    print(token.text, token.lemma_, token.pos_, token.dep_)

答案 1 :(得分:2)

您现在可以使用Stanza(以前是StandfordNLP)

import stanza
from spacy_stanza import StanzaLanguage

stanza.download('ru')  # will take a while

snlp = stanza.Pipeline(lang="ru")
nlp = StanzaLanguage(snlp)

text = "Андре́й Серге́евич Арша́вин (род. 29 мая 1981[4], Ленинград) — российский футболист, бывший капитан сборной России, заслуженный мастер спорта России (2008)."
doc = nlp(text)

for token in doc:
    print(token, token.lemma, token.lemma_)

所有可用的型号均在此处https://stanfordnlp.github.io/stanza/models.html

列出

答案 2 :(得分:2)

您可以在spaCy中使用Russian lemmatizer。在此tutorial之后,结果将是:

ffplay -f rawvideo -pixel_format yuv420p -video_size 656x500 -i filename.yuv

输出

from spacy.lang.ru import Russian
nlp = Russian()

def lemmatization(text):
   doc = nlp(text)
   for token in doc:
      print(token, token.lemma, token.lemma_)
   tokens = [token.lemma_ for token in doc]
   return " ".join(tokens)

text = "Андре́й Серге́евич Арша́вин (род. 29 мая 1981[4], Ленинград) — российский футболист, бывший капитан сборной России, заслуженный мастер спорта России (2008)."
lemmatization(text)

在定形后使用词干也很有用:

'Андре́й серге́ Арша́вин ( род . 29 мая 1981[4 ] , Ленинград ) — российский футболист , бывший капитан сборной России , заслуженный мастер спорт России ( 2008 ) .'

输出:

import nltk
from nltk.stem.snowball import SnowballStemmer

stemmer = SnowballStemmer(language='russian')
tokenizer = nltk.tokenize.WhitespaceTokenizer()

def stemming(text):
   tokens = [stemmer.stem(w) for w in tokenizer.tokenize(text)]
   return " ".join(tokens)

stemming(text)

答案 3 :(得分:1)

您可以将Spacy与this project中的俄语模型ru2一起使用。可以。