我已下载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来进行词义化。
我想将此内容扩展到所有没有模型的语言。
注意:在上面的代码中,我认为它可以进一步改进,因为就我而言,我只需要引理即可,那么我可以关闭哪些功能以及如何关闭?
答案 0 :(得分:3)
-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_)
列出
答案 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
一起使用。可以。