Извлечь специфику c условий в python - PullRequest
1 голос
/ 07 апреля 2020

Я создаю python код, подобный этому, но он не работает хорошо. (результат не возвращается)

Я хочу извлечь только "動詞" "名詞" "形容詞"

У вас есть идеи?

Большое вам спасибо.

m = MeCab.Tagger("-Ochasen")
for result in results:
 #     word = m.parse(result['text'])

    word = [line.split()[0] for line in m.parse(result['text']).splitlines() if "名詞" in line.split()[-1] 
                                for line in m.parse(result['text']).splitlines() if "動詞" in line.split()[-1] 
                                     for line in m.parse(result['text']).splitlines() if "形容詞" in line.split()[-1]]
    result['mecab'] = word

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Это проще, если вы используете данные, которые были проанализированы. Вы должны использовать fugashi , который также является оболочкой MeCab.

import fugashi
tagger = fugashi.Tagger()
nodes = tagger.parseToNodeList("図書館から赤い本を借りた")
goodpos = ['名詞', '動詞', '形容詞']
nodes = [nn.surface for nn in nodes if nn.feature.pos1 in goodpos]
# => ['図書', '赤い', '本', '借り']
0 голосов
/ 07 апреля 2020

Я в основном догадываюсь, что вы пытаетесь сделать. Я предполагаю, что у вас есть список результатов. Вы пытаетесь извлечь определенный c набор символов из каждого элемента результата в вашем списке результатов. Тогда вам нужно сделать:

m = MeCab.Tagger("-Ochasen")
for result in results:
    result_text = result["text"]
    result_text = m.parse(result_text)
    text_lines = result_text.splitlines()
    word = None
    for line in text_lines:
        if "名詞" in line:
            word = "名詞"
        elif "動詞" in line:
            word = "動詞"
        elif "形容詞" in line:
            word = "形容詞"
    if word is not None:
        result['mecab'] = word

или что-то в этом роде

...