Лучший способ определить имя человека / имя объекта из французского текста - PullRequest
1 голос
/ 04 августа 2020

Я пытаюсь определить имя человека или название компании / учреждения по французским текстам. Я пробовал следующее, и результаты совсем не хороши.

import spacy

# or any of the other two models fr_core_news_sm, fr_core_news_lg
nlp = spacy.load("fr_core_news_md")  

text ="""Tous les vents,
Balayent les mots de coeur
Moi, j'suis comme le vent:
L'esprit à mille à l'heure,
Je juge sans doute trop vite
C'est ok, tant pis
C'est juste là, je m'agite
Je grandis, l'amour aussi
C'est au gré du vent
Que j'aime vagabonder,
Moi, je suis comme le vent
J'embrasse toute une armée
De rêves et de bleuets,
Me plonger dedans
Je sais ce que je sais 
Rapport de: Andre STE-GERMAINE,
"""

doc_fr = nlp_fr(text_fr)

Ну, он помечен

  1. "Balayent как ЧЕЛОВЕК, что не должно,
  2. Rapport de: Andre STE-GERMAINE ',' MIS C ', который должен быть PERSON

Я не уверен, может ли NLTK помочь в этом.

Есть ли другой инструмент лучше чтобы помочь с этой задачей?

Спасибо.

1 Ответ

1 голос
/ 04 августа 2020

Выбранная вами модель обучена на выбранных данных, которые могут не представлять ваш собственный набор данных. Вы можете более тонко настроить модель, предоставив больше аннотированных данных для лучшего перекрытия.

Переформатирование текстовых данных также должно повысить производительность модели, поскольку предоставленный текст немного сложно понять в модели Spacy. Предложения разбиты на части, а не полностью читаемый текст, слова пишутся с заглавной буквы, хотя их и не должно быть.

Я не говорю по-французски, но немного переформатировал ваш текст и, похоже, уже получил лучшие результаты .

import spacy
nlp = spacy.load("fr_core_news_md")
text ="""Tous les vents, balayent les mots de coeur.
Moi, j'suis comme le vent: L'esprit à mille à l'heure, je juge sans doute trop vite.
C'est ok, tant pis.
C'est juste là, je m'agite.
Je grandis, l'amour aussi.
C'est au gré du vent.
Que j'aime vagabonder, moi, je suis comme le vent.
J'embrasse toute une armée de rêves et de bleuets,
Me plonger dedans je sais ce que je sais.
Rapport de: Andre STE-GERMAINE,
"""
doc = nlp(text)
for ent in doc.ents:
    print(ent.text, '-',ent.label_)

Это приводит к:

Andre STE - PER

Я объясняю в комментариях к этому сообщению, почему человек не полностью помечен, но давайте сделаем это здесь еще раз. Последнее предложение этого текста на самом деле не является предложением, на котором Spacy NER действительно может работать точно, поскольку это не настоящее предложение, на котором обучались. Имя также полностью написано с заглавной буквы, что не является нормальным для чьей-либо фамилии, что также еще больше запутало алгоритм.

В заключение, предоставьте ему данные, на которых он обучается, переформатируйте свой текст, это повысит производительность значительно.

...