如何在python中把形容词变成名词(pymorphy2)?



我有一个俄语单词(这实际上是困难所在)。它是一个形容词。我需要把它变成名词形式。

我发现了一个有趣的库,可以解析单词,屈折和规范化它们。这是库:pymorphy2,但无论我做什么,我不能得到预期的结果。我想接收:

这些是城市的名字。左边是我从数据中得到的单词的形式,右边是我需要的形式。

киселевский ---> киселевск
юргинский ---> юрга

到目前为止,如果你看一下它们的分析,左边的单词只被定义为形容词的不同形式。有什么办法把它们转换成名词吗?

小字解析代码:

import pymorphy2
morph = pymorphy2.MorphAnalyzer()
word = 'Киселевский'
test = morph.parse(word)[0]
test.tag.POS
>>'ADJF'
test_2 = morph.parse(word)[0].normal_form
test_2
>>'киселевский'
test.lexeme
>> [Parse(word='киселевский', tag=OpencorporaTag('ADJF masc,sing,nomn'), normal_form='киселевский', score=1.0, methods_stack=((FakeDictionary(), 'киселевский', 16, 0), (KnownSuffixAnalyzer(min_word_length=4, score_multiplier=0.5), 'вский'))),
Parse(word='киселевского', tag=OpencorporaTag('ADJF masc,sing,gent'), normal_form='киселевский', score=1.0, methods_stack=((FakeDictionary(), 'киселевского', 16, 1), (KnownSuffixAnalyzer(min_word_length=4, score_multiplier=0.5), 'вский'))),
Parse(word='киселевскому', tag=OpencorporaTag('ADJF masc,sing,datv'), normal_form='киселевский', score=1.0, methods_stack=((FakeDictionary(), 'киселевскому', 16, 2), (KnownSuffixAnalyzer(min_word_length=4, score_multiplier=0.5), 'вский'))),
Parse(word='киселевского', tag=OpencorporaTag('ADJF anim,masc,sing,accs'), normal_form='киселевский', score=1.0, methods_stack=((FakeDictionary(), 'киселевского', 16, 3), (KnownSuffixAnalyzer(min_word_length=4, score_multiplier=0.5), 'вский'))),
Parse(word='киселевский', tag=OpencorporaTag('ADJF inan,masc,sing,accs'), normal_form='киселевский', score=1.0, methods_stack=((FakeDictionary(), 'киселевский', 16, 4), (KnownSuffixAnalyzer(min_word_length=4, score_multiplier=0.5), 'вский'))),
Parse(word='киселевским', tag=OpencorporaTag('ADJF masc,sing,ablt'), normal_form='киселевский', score=1.0, methods_stack=((FakeDictionary(), 'киселевским', 16, 5), (KnownSuffixAnalyzer(min_word_length=4, score_multiplier=0.5), 'вский')))...]

您需要一个数据库(例如,通过wikipedia)来做到这一点,因为关系形容词不被认为是它们派生的名词的一种形式;它们被认为是一个不同的词(词素),由解析对象的pymorphy2ID(属性methods_stack[0][2])表示。

对于城市名称,我认为这将更加困难,因为在源地名和它的关系形容词之间转换的规则是不规则的(就像在英语中一样),您可能只能找到特定规模以上的城市的适当数据。

最新更新