Как кластеризовать именованную сущность с помощью StanfordNER с использованием Python - PullRequest
0 голосов
/ 07 июня 2018

Stanford NER предоставляет банку NER для обнаружения POS-тегов и NER.Но я пытаюсь разобрать одну проблему с одним из предложений.Предложение выглядит следующим образом:

Joseph E. Seagram & Sons, INC said on Thursday that it is merging its two United States based wine companies

Ниже приведен мой код

st = StanfordNERTagger('./stanford- ner/classifiers/english.all.3class.distsim.crf.ser.gz',
                       './stanford-ner/stanford-ner.jar',
                       encoding='utf-8')
ne_in_sent = []
with open("./CCAT/2551newsML.txt") as fd:
    lines = fd.readlines()
    for line in lines:
        print(line)
        tokenized_text = word_tokenize(line)
        classified_text = st.tag(tokenized_text)
        ne_tree = stanfordNE2tree(classified_text)
        for subtree in ne_tree:
            # If subtree is a noun chunk, i.e. NE != "O"
            if type(subtree) == Tree:
                ne_label = subtree.label()
                ne_string = " ".join([token for token, pos in subtree.leaves()])
                ne_in_sent.append((ne_string, ne_label))
                print(ne_in_sent)

, когда я анализирую его, я получаю следующие организации в качестве организации.(Джозеф Э. Сиграм и Сыновья, Организация) и (Инк, Организация)

Также для некоторых других текстов в файле, таких как

TransCo has a very big plane. Transco is moving south.

Это дифференцирует организации из-за капитализации, поэтому я получаю2 объекта (TransCo, организация) и (Transco, организация).

Возможно ли преобразовать их в один объект?

1 Ответ

0 голосов
/ 06 августа 2018

Использовал проверку сходства косинусов, чтобы проверить сходство

ref: Рассчитать сходство косинусов по двум строкам предложения

...