Vergleichen Sie die Arbeit von Open Source Python - Bibliotheken zur Erkennung benannter EntitÀten

EinfĂŒhrung


Wir im Unternehmen erstellen einen Service, mit dem Sie automatisch Lizenzvereinbarungen und andere Vereinbarungen zwischen Freiberuflern und ihren Kunden erstellen, verwalten und sicher speichern können.

Um dieses Problem zu lösen, habe ich Dutzende von Lösungen auf dem Gebiet der Verarbeitung natĂŒrlicher Sprache ausprobiert, einschließlich Open Source-Lösungen, und möchte meine Erfahrungen mit Open Source Python-Bibliotheken zum Erkennen benannter EntitĂ€ten teilen.

Anerkannte benannte EntitÀten


Ein paar Worte zum Problem. Named Entity Recognition (NER) ist eine Richtung der menschlichen Sprachverarbeitungstechnologie, deren Softwareimplementierung es ermöglicht, objektivierte Kategorien von Wörtern und Phrasen in Sprache und Text zu finden. Anfangs waren dies geografische Namen, Namen von Personen, Organisationen, Adressen, aber jetzt wurde dieses Konzept stark erweitert und mit Hilfe von NER suchen wir im Text nach relativen und absoluten Daten, Zahlen, Zahlen usw.
Die Identifizierung benannter EntitĂ€ten ist das „Tor“ zur menschlichen Sprache. Sie ermöglicht es Ihnen, die Absichten einer Person zu identifizieren und zu verarbeiten, um die Verbindung von Wörtern in ihrer Sprache und der realen Welt herzustellen.


Sprachungleichheit


ZunĂ€chst möchte ich auf die offensichtliche Ungleichheit bei Softwarelösungen fĂŒr verschiedene Sprachen aufmerksam machen. Daher arbeiten die meisten Entwicklungen (einschließlich der von russischen Programmierern erstellten) mit Englisch. Es ist eine undankbare Aufgabe, fertige Modelle fĂŒr Bahasa, Hindi oder Arabisch zu finden.

EuropĂ€ische Sprachen sind zumindest in den beliebtesten Bibliotheken vertreten, afrikanische Sprachen gibt es in der modernen Verarbeitung natĂŒrlicher Sprache grundsĂ€tzlich nicht. Aus eigener Erfahrung weiß ich, dass der afrikanische Kontinent ein riesiger und reicher Markt ist, und diese Haltung ist höchstwahrscheinlich die TrĂ€gheit des Marktes.

Es gibt verschiedene Lösungen fĂŒr die russische Sprache, die in ihrer QualitĂ€t ĂŒberraschend sind. Sie spĂŒren jedoch nicht die kommerzielle Macht und das akademische Potenzial wie entwickelte Bibliotheken, die fĂŒr die Verarbeitung von Englisch „gebaut“ sind.

Zu verarbeitender Text


Ich nahm mehrere VorschlĂ€ge aus verschiedenen Quellen und kombinierte sie zu einem etwas hypnotischen Text, um zu testen, wie gut die ausgewĂ€hlten Bibliotheken ihre Arbeit erledigen wĂŒrden.

english_text = ''' I want a person available 7 days and with prompt response all most every time. Only Indian freelancer need I need PHP developer who have strong experience in Laravel and Codeigniter framework for daily 4 hours. I need this work by Monday 27th Jan. should be free from plagiarism . 
Need SAP FICO consultant for support project needs to be work on 6 months on FI AREAWe.  Want a same site to be created as the same as this https://www.facebook.com/?ref=logo, please check the site before contacting to me and i want this site to be ready in 10 days. They will be ready at noon tomorrow .'''

russian_text = '''   110     ,     .        https://www.sobyanin.ru/  , 1 .     .51 (   :  , )  ?     2107   47     24,    . 
 c        10  1970 ,     -, . ,  5/1 8 000 ( )  00  .               .              - .'''



NLTK-Bibliothek


NLTK ist eine klassische Bibliothek fĂŒr die Verarbeitung natĂŒrlicher Sprache. Sie ist einfach zu verwenden, erfordert kein Langzeitstudium und fĂŒhrt 99% der Aufgaben aus, die bei der Lösung von SchĂŒlerproblemen auftreten können.
import nltk
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('maxent_ne_chunker')
nltk.download('words')
for sent in nltk.sent_tokenize(english_text):
   for chunk in nltk.ne_chunk(nltk.pos_tag(nltk.word_tokenize(sent))):
      if hasattr(chunk, 'label'):
         print(chunk)

Ausgabe: Wie wir sehen können, hat NLTK gute Arbeit geleistet, aber um das Ergebnis „reicher“ zu machen, mĂŒssen wir unseren eigenen Tagger trainieren (oder einen anderen aus einer ziemlich breiten Liste auswĂ€hlen). Aber lohnt es sich im Jahr 2020, wenn es einfachere Lösungen gibt?
(GPE Indian/JJ)
(ORGANIZATION PHP/NNP)
(GPE Laravel/NNP)
(PERSON Need/NNP)
(ORGANIZATION SAP/NNP)
(ORGANIZATION FI/NNP)




Stanford CoreNLP


Bild

Eine Möglichkeit, die Funktionen von NLTK zu erweitern, besteht darin, die klassische Java-Bibliothek von Stanford CoreNLP mit der klassischen Python-Bibliothek zu verwenden. Die QualitÀt verbessert sich bei relativ geringen Anforderungen erheblich.
from nltk.tag.stanford import StanfordNERTagger
jar = "stanford-ner-2015-04-20/stanford-ner-3.5.2.jar"
model = "stanford-ner-2015-04-20/classifiers/" 
st_3class = StanfordNERTagger(model + "english.all.3class.distsim.crf.ser.gz", jar, encoding='utf8') 
st_4class = StanfordNERTagger(model + "english.conll.4class.distsim.crf.ser.gz", jar, encoding='utf8') 
st_7class = StanfordNERTagger(model + "english.muc.7class.distsim.crf.ser.gz", jar, encoding='utf8')
for i in [st_3class.tag(english_text.split()), st_4class.tag(english_text.split()), st_7class.tag(english_text.split())]:
  for b in i:
    if b[1] != 'O':
        print(b)

Output: Wie wir sehen können, hat sich die QualitĂ€t des Outputs erheblich verbessert, und angesichts der Geschwindigkeit und Benutzerfreundlichkeit ist es offensichtlich, dass NLTK fĂŒr einfache Aufgaben fĂŒr die industrielle Entwicklung gut geeignet ist.
('PHP', 'ORGANIZATION')
('Laravel', 'LOCATION')
('Indian', 'MISC')
('PHP', 'ORGANIZATION')
('Laravel', 'LOCATION')
('Codeigniter', 'PERSON')
('SAP', 'ORGANIZATION')
('FICO', 'ORGANIZATION')
('PHP', 'ORGANIZATION')
('Laravel', 'LOCATION')
('Monday', 'DATE')
('27th', 'DATE')
('Jan.', 'DATE')
('SAP', 'ORGANIZATION')



Spacy



Bild

Spacy ist eine Open-Source-Python-Bibliothek fĂŒr die Verarbeitung natĂŒrlicher Sprache. Sie wird unter der MIT-Lizenz (!) Veröffentlicht. Sie wurde von Matthew Hannibal und Ines Montany, den GrĂŒndern der Entwicklerfirma Explosion, erstellt und entwickelt.
In der Regel wird jeder, der mit der Notwendigkeit konfrontiert ist, einige Probleme bei der Verarbeitung einer natĂŒrlichen Sprache zu lösen, frĂŒher oder spĂ€ter von dieser Bibliothek erfahren. Die meisten Funktionen sind sofort verfĂŒgbar. Entwickler achten darauf, dass die Bibliothek einfach zu bedienen ist.
Space bietet 18 Tags, die benannte EntitĂ€ten markieren, sowie eine einfache Möglichkeit, Ihr eigenes Modell neu zu trainieren. FĂŒgen Sie hier eine hervorragende Dokumentation, eine große Community und gute UnterstĂŒtzung hinzu - und es wird deutlich, warum diese Lösung in den letzten Jahren so beliebt geworden ist.

import spacy
model_sp = en_core_web_lg.load()
for ent in model_sp(english_text).ents:
  print(ent.text.strip(), ent.label_)

Ausgabe: Wie Sie sehen können, ist das Ergebnis viel besser und der Code ist viel einfacher und verstĂ€ndlicher. Nachteile der Arbeit - eine große Anzahl von Modellen, langsamer Betrieb, relativ unlogische "Tags", Mangel an Modellen fĂŒr viele Sprachen, einschließlich Russisch (obwohl es mehrsprachige Modelle gibt).
7 days DATE
New York GPE
Indian NORP
Laravel LOC
Codeigniter NORP
4 hours TIME
Monday 27th Jan. DATE
FICO ORG
6 months DATE
10 days DATE
noon TIME
tomorrow DATE
Iceland GPE



Flair


Bild

Flair bietet ein viel tieferes Eintauchen in den Themenbereich, die Bibliothek wurde tatsĂ€chlich zur Lösung von Forschungsproblemen erstellt, die Dokumentation ist nicht schlecht, aber bei einigen Fehlern gibt es eine Integration mit einer großen Anzahl anderer Bibliotheken, klaren, logischen und lesbaren Code.
Die Bibliothek hat eine entwickelte Community und ist nicht nur auf Englisch ausgerichtet. Aufgrund der großen Anzahl verfĂŒgbarer Modelle ist Flair bei der Auswahl der Sprachen wesentlich demokratischer als Spacy.
from flair.models import SequenceTagger
tagger = SequenceTagger.load('ner')
from flair.data import Sentence
s = Sentence(english_text)
tagger.predict(s)
for entity in s.get_spans('ner'):
    print(entity)

Ausgabe: Wie Sie sehen können, hat das trainierte Modell nicht optimal funktioniert. Allerdings verwenden nur wenige Benutzer Flair "out of the box" - es ist in erster Linie eine Bibliothek zum Erstellen eigener Tools. Gleiches gilt mit Vorbehalt fĂŒr die nĂ€chste Bibliothek.
Span [6,7]: "7 days" [− Labels: DATE (0.9329)]
Span [17]: "Indian" [− Labels: NORP (0.9994)]
Span [35,36]: "4 hours." [− Labels: TIME (0.7594)]
Span [42,43,44]: "Monday 27th Jan." [− Labels: DATE (0.9109)]
Span [53]: "FICO" [− Labels: ORG (0.6987)]
Span [63,64]: "6 months" [− Labels: DATE (0.9412)]
Span [98,99]: "10 days." [− Labels: DATE (0.9320)]
Span [105,106]: "noon tomorrow" [− Labels: TIME (0.8667)]




Deeppavlov


Bild
DeepPavlov ist eine Open Source-Bibliothek, die von TensorFlow und Keras erstellt wurde.

Entwickler empfehlen, das System hauptsĂ€chlich fĂŒr "Konversations" -Systeme, Chat-Bots usw. zu verwenden. Die Bibliothek eignet sich jedoch auch hervorragend zur Lösung von Forschungsproblemen. Die Verwendung "in der Produktion" ohne ernsthafte Arbeit zum "Anpassen" und "Fertigstellen" der Lösung ist eine Aufgabe, die anscheinend von den Entwicklern von MIPT nicht einmal vorgeschlagen wird.
Die seltsame und unlogische Herangehensweise an die Codearchitektur, die Python Zen widerspricht, bringt dennoch gute Ergebnisse, wenn Sie genĂŒgend Zeit damit verbringen.
from deeppavlov import configs, build_model
from deeppavlov import build_model, configs

ner_model = build_model(configs.ner.ner_ontonotes_bert, download=True)
result = ner_model([english_text])
for i in range(len(result[0][0])):
     if result [1][0][i] != 'O':
         print(result[0][0][i], result[1][0][i])

Ausgabe: Das Ergebnis ist vorhersehbar, verstĂ€ndlich, detailliert und eines der besten. Das Modell selbst kann auch direkt in Hugging Face Transformers verwendet werden, wodurch in vielerlei Hinsicht AnsprĂŒche an die Codearchitektur beseitigt werden.
7 B-DATE
days I-DATE
Indian B-NORP
Laravel B-PRODUCT
Codeigniter B-PRODUCT
daily B-DATE
4 B-TIME
hours I-TIME
Monday B-DATE
27th I-DATE
Jan I-DATE
6 B-DATE
months I-DATE
FI B-PRODUCT
AREAWe I-PRODUCT
10 B-DATE
days I-DATE
noon B-TIME
tomorrow B-DATE




deepmipt / ner


Dies ist in der Tat die Bibliothek, mit der Deep Pavlov begann. Es kann verwendet werden, um die Richtung der Gedanken der Entwickler und die Fortschritte zu verstehen, die sie gemacht haben.
import ner
example = russian_text
def deepmint_ner(text):
  extractor = ner.Extractor()
  for m in extractor(text):
     print(m)
deepmint_ner(example)

Ausgabe:
Match(tokens=[Token(span=(7, 13), text='')], span=Span(start=7, end=13), type='LOC')
Match(tokens=[Token(span=(492, 499), text='')], span=Span(start=492, end=499), type='PER')
Match(tokens=[Token(span=(511, 520), text=''), Token(span=(521, 525), text='')], span=Span(start=511, end=525), type='PER')
Match(tokens=[Token(span=(591, 600), text='')], span=Span(start=591, end=600), type='LOC')
Match(tokens=[Token(span=(814, 820), text=''), Token(span=(821, 829), text='')], span=Span(start=814, end=829), type='PER')


Polyglot


Eine der Ă€ltesten Bibliotheken, schnelle Arbeit und eine große Anzahl unterstĂŒtzter Sprachen machen es immer noch beliebt. Andererseits erlaubt die virale GPLv3-Lizenz nicht die vollstĂ€ndige Verwendung in der kommerziellen Entwicklung.
from polyglot.text import Text
for ent in Text(english_text).entities:
 print(ent[0],ent.tag)

Ausgabe: Und fĂŒr die russische Sprache:
Laravel I-LOC
SAP I-ORG
FI I-ORG


!polyglot download embeddings2.ru ner2.ru
for ent in Text(russian_text).entities:
 print(ent[0],ent.tag)

Ausgabe: Das Ergebnis ist nicht das beste, aber die Geschwindigkeit und die gute UnterstĂŒtzung können es verbessern, wenn Sie sich anstrengen.
24 I-ORG
I-PER
I-LOC
I-PER
I-ORG
I-PER




AdaptNLP


Bild
Eine weitere neue Bibliothek mit einer extrem niedrigen Eintrittsschwelle fĂŒr den Forscher.
Mit AdaptNLP können Benutzer, von Studenten bis zu erfahrenen Dateningenieuren, moderne NLP-Modelle und Trainingsmethoden verwenden.
Die Bibliothek basiert auf den beliebten Bibliotheken Flair und Hugging Face Transformers.

from adaptnlp import EasyTokenTagger
tagger = EasyTokenTagger()
sentences = tagger.tag_text(
    text = english_text, model_name_or_path = "ner-ontonotes"
)
spans = sentences[0].get_spans("ner")
for sen in sentences:
    for entity in sen.get_spans("ner"):
        print(entity)

Ausgabe: Das Ergebnis ist akzeptabel, aber die Bibliothek ermöglicht es Ihnen, eine Vielzahl von Modellen zu verwenden, um die Aufgabe abzuschließen, und es kann wiederholt verbessert werden, wenn Sie Anstrengungen unternehmen (aber warum, wenn Sie Flair und Hugging Face Transformers direkt haben). Die Einfachheit, eine große Liste von Aufgaben und eine gute Architektur sowie die systematischen BemĂŒhungen der Entwickler lassen uns jedoch hoffen, dass die Bibliothek eine Zukunft hat.
DATE-span [6,7]: "7 days"
NORP-span [18]: "Indian"
PRODUCT-span [30]: "Laravel"
TIME-span [35,36,37]: "daily 4 hours"
DATE-span [44,45,46]: "Monday 27th Jan."
ORG-span [55]: "FICO"
DATE-span [65,66]: "6 months"
DATE-span [108,109]: "10 days"
TIME-span [116,117]: "noon tomorrow"




Strophe


Bild
Stanza von StanfordNlp ist ein Geschenk an Entwickler der Stanford University im Jahr 2020. Was Spacy fehlte, war Mehrsprachigkeit, ein tiefes Eintauchen in die Sprache und eine einfache Bedienung.
Wenn die Community diese Bibliothek unterstĂŒtzt, hat sie jede Chance, eine der beliebtesten zu werden.
import stanza
stanza.download('en')
def stanza_nlp(text):
  nlp = stanza.Pipeline(lang='en', processors='tokenize,ner')
  doc = nlp(text)
  print(*[f'entity: {ent.text}\ttype: {ent.type}' for sent in doc.sentences for ent in sent.ents], sep='\n')
stanza_nlp(english_text)

Ausgabe: Und fĂŒr die russische Sprache:
entity: 7 days type: DATE
entity: Indian type: NORP
entity: Laravel type: ORG
entity: Codeigniter type: PRODUCT
entity: daily 4 hours type: TIME
entity: Monday 27th Jan. type: DATE
entity: SAP type: ORG
entity: FICO type: ORG
entity: 6 months type: DATE
entity: FI AREAWe type: ORG
entity: 10 days type: DATE
entity: noon tomorrow type: TIME



import stanza
stanza.download('ru')
def stanza_nlp_ru(text):
  nlp = stanza.Pipeline(lang='ru', processors='tokenize,ner')
  doc = nlp(text)
  print(*[f'entity: {ent.text}\ttype: {ent.type}' for sent in doc.sentences for ent in sent.ents], sep='\n')
stanza_nlp_ru(russian_text)

Ausgabe: Schnelle Arbeit, schöner Code, gutes Ergebnis.
2020-05-15 08:01:18 INFO: Use device: cpu
2020-05-15 08:01:18 INFO: Loading: tokenize
2020-05-15 08:01:18 INFO: Loading: ner
2020-05-15 08:01:19 INFO: Done loading processors!
entity: type: LOC
entity: type: LOC
entity: type: PER
entity: 2107 type: MISC
entity: 47 type: MISC
entity: 24 type: MISC
entity: type: PER
entity: - type: LOC
entity: . type: LOC
entity: type: LOC
entity: type: LOC
entity: type: PER




Allennlp


Bild
Forschungsbibliothek, aufgebaut auf PyTorch /
Einerseits - einfache Architektur und hohe Geschwindigkeit andererseits - Entwickler Àndern stÀndig etwas an der Architektur, was sich auf die Arbeit der gesamten Bibliothek auswirkt.
from allennlp.predictors.predictor import Predictor
import allennlp_models.ner.crf_tagger
predictor = Predictor.from_path("https://storage.googleapis.com/allennlp-public-models/ner-model-2020.02.10.tar.gz")
allen_result = predictor.predict(
  sentence=english_text
)
for i in zip(allen_result['tags'], allen_result['words']):
    if (i[0]) != 'O':
      print(i)

Ausgabe:
('U-MISC', 'Indian') ('U-MISC', '
PHP')
('U-MISC', 'Laravel')
('U-MISC', 'Codeigniter')
('B- ORG ',' SAP ')
(' L-ORG ',' FICO ')
Das Modul arbeitet schnell, aber das Ergebnis ist inakzeptabel schlecht.

Hanlp


Bild
HanLP ist eine der Open-Source-Bibliotheken von Entwicklern aus China. Ein kluges, gut entwickeltes, aktives Projekt, das meiner Meinung nach seine Nische jenseits der Grenzen des Himmlischen Reiches finden wird.
NLP-Bibliothek fĂŒr Forscher und Unternehmen, erstellt auf TensorFlow 2.0.
HanLP wird mit vorbereiteten Modellen fĂŒr verschiedene Sprachen geliefert, darunter Englisch, Chinesisch und viele andere.
Das einzige Problem ist die QualitÀt der Ausgabe "springt" nach jeder Aktualisierung der Bibliothek.
recognizer = hanlp.load(hanlp.pretrained.ner.MSRA_NER_BERT_BASE_ZH)
recognizer([list('äžŠæ”·ćŽćź‰ć·„äžšïŒˆé›†ć›ąïŒ‰ć…Źćžè‘Łäș‹é•żè°­æ—­ć…‰ć’Œç§˜äčŠćŒ æ™šéœžæ„ćˆ°çŸŽć›œçșœçșŠçŽ°ä»Łè‰șæœŻćšç‰©éŠ†ć‚è§‚ă€‚'),
                list('èšć“ˆć€«èŻŽïŒŒäŒŠæ‹‰ć…‹ć°†ćŒè”ćˆć›œé”€æŻäŒŠæ‹‰ć…‹ć€§è§„æšĄæ€äŒ€æ€§æ­Šć™šç‰čćˆ«ć§”ć‘˜äŒšç»§ç»­äżæŒćˆäœœă€‚')])

Ausgabe:

[[('äžŠæ”·ćŽćź‰ć·„äžšïŒˆé›†ć›ąïŒ‰ć…Źćž', 'NT', 0, 12), ('è°­æ—­ć…‰', 'NR', 15, 18),
('ćŒ æ™šéœž', 'NR', 21, 24),
('çŸŽć›œ', 'NS', 26, 28),
('çșœçșŠçŽ°ä»Łè‰șæœŻćšç‰©éŠ†', 'NS', 28, 37)],
[('èšć“ˆć€«', 'NR', 0, 3),
('äŒŠæ‹‰ć…‹', 'NS', 5, 8),
('è”ćˆć›œé”€æŻäŒŠæ‹‰ć…‹ć€§è§„æšĄæ€äŒ€æ€§æ­Šć™šç‰čćˆ«ć§”ć‘˜äŒš', 'NT', 10, 31)]]


import hanlp
tokenizer = hanlp.utils.rules.tokenize_english
testing = tokenizer('Need SAP FICO consultant for support project needs to be work on 6 months on FI AREAWe')
recognizer = hanlp.load(hanlp.pretrained.ner.CONLL03_NER_BERT_BASE_UNCASED_EN)
recognizer(testing)

Ausgabe: FĂŒr Englisch ist das Ergebnis instabil, dies wird jedoch mit dem Tokenizer von NLTK gelöst.
[('SAP FICO', 'ORG', 1, 3)]




PullEnti


C # -Bibliothek fĂŒr NER in russischer Sprache. 2016 gewann sie den ersten Platz im factRuEval-2016-Wettbewerb. Im Jahr 2018 portierte der Autor den Code nach Java und Python.
Wahrscheinlich die schönste Lösung fĂŒr die russische Sprache.
Schnell, tief, mit Liebe zum Detail. Die Entscheidung basiert auf Regeln, was natĂŒrlich ihre Entwicklung einschrĂ€nkt, aber ihre Autonomie, Geschwindigkeit und Ergebnisse lassen uns auf die Entwicklung des Projekts hoffen.
Es gibt einen Python-Wrapper fĂŒr die Bibliothek, obwohl er "verlassen" aussieht.
from pullenti_wrapper.processor import (
    Processor,
    MONEY,
    URI,
    PHONE,
    DATE,
    KEYWORD,
    DEFINITION,
    DENOMINATION,
    MEASURE,
    BANK,
    GEO,
    ADDRESS,
    ORGANIZATION,
    PERSON,
    MAIL,
    TRANSPORT,
    DECREE,
    INSTRUMENT,
    TITLEPAGE,
    BOOKLINK,
    BUSINESS,
    NAMEDENTITY,
    WEAPON,
)

processor = Processor([PERSON, ORGANIZATION, GEO, DATE, MONEY])
text = russian_text
result = processor(text)
result.graph


Ausgabe:Bild

Natascha


Bild
Natasha, dies scheint eines der wichtigsten NLP-Projekte fĂŒr die russische Sprache zu sein. Es hat eine lange Geschichte und begann mit einer regelbasierten Lösung, die vom beliebten Yargy Parser entwickelt wurde und jetzt die wichtigsten NLP-Aufgaben fĂŒr die russische Sprache löst: Tokenisierung, Satzsegmentierung, Lemmatisierung, Phrasennormalisierung, Parsing, NER-Tagging, Faktenextraktion.
from natasha import (
    Segmenter,
    MorphVocab,
    
    NewsEmbedding,
    NewsMorphTagger,
    NewsSyntaxParser,
    NewsNERTagger,
    
    PER,
    NamesExtractor,

    Doc
)

segmenter = Segmenter()
morph_vocab = MorphVocab()

emb = NewsEmbedding()
morph_tagger = NewsMorphTagger(emb)
syntax_parser = NewsSyntaxParser(emb)
ner_tagger = NewsNERTagger(emb)

names_extractor = NamesExtractor(morph_vocab)

doc = Doc(russian_text)

Ausgabe: Das Ergebnis ist leider nicht stabil, im Gegensatz zu den benutzerdefinierten Regeln von Yargy Parser vom selben Entwickler. Das Projekt wird jedoch aktiv weiterentwickelt und zeigt ein anstĂ€ndiges Ergebnis fĂŒr die kommerzielle Nutzung.
110 ,
LOC───
.
https://www.sobyanin.ru/ , 1 .
.51 ( :
LOC───────────────
, ) ?
ORG PER────────────
2107 47
24, .
ORG──
c
PER────────────────
10 1970 ,
─────────
-, . , 5/1 8 000 ( )
LOC──────────── PER─────────
00
LO
.

PER────────────
- .




ner-d


Das letzte Modul ist ein privates Projekt, das nicht sehr beliebt ist und auf Spacy und Thinc aufbaut und dennoch die Herangehensweise an die Architektur berĂŒcksichtigt (Schwerpunkt auf Benutzerfreundlichkeit).
from nerd import ner
doc_nerd_d = ner.name(english_text)
text_label = [(X.text, X.label_) for X in doc_nerd_d]
print(text_label)


Output: Von allen Projekten scheint mir Stanza von StanfordNlp das „ausgewogenste“ und bequemste mit akzeptablen Ergebnissen und einfacher Bedienung zu sein - die Arbeit der meisten Sprachen, das qualitativ hochwertige akademische Studium und die UnterstĂŒtzung der wissenschaftlichen Gemeinschaft der UniversitĂ€t selbst machen das Projekt meiner Meinung nach zum vielversprechendsten . Das nĂ€chste Mal werde ich meine Erfahrungen mit der Arbeit mit "geschlossenen" Lösungen und der vorgeschlagenen API fĂŒr die Verarbeitung natĂŒrlicher Sprache teilen. Der gesamte Code ist bei Google Colab verfĂŒgbar
[('7 days', 'DATE'), ('Indian', 'NORP'), ('PHP', 'ORG'), ('Laravel', 'GPE'), ('daily 4 hours', 'DATE'), ('Monday 27th Jan.', 'DATE'), ('Need SAP FICO', 'PERSON'), ('6 months', 'DATE'), ('10 days', 'DATE'), ('noon', 'TIME'), ('tomorrow', 'DATE')]







All Articles