[PYTHON] Trainieren Sie Stanford NER Tagger mit Ihren eigenen Daten

NER ist eine Abkürzung für Named Entity Recognition und eine der Aufgaben der Verarbeitung natürlicher Sprache, die als Eigenexpressionserkennung bezeichnet wird. Stanford NER Tagger ist ein Werkzeug, um diese Aufgabe zu lösen. Dieses Mal werde ich das selbst trainieren.

Vorbereitungen

Laden Sie zunächst ein Beispiel für Trainingsdaten herunter. https://github.com/synalp/NER/blob/master/corpus/CoNLL-2003/eng.train

Dann laden Sie Stanford NER Tagger herunter. https://nlp.stanford.edu/software/CRF-NER.shtml#Download

Dann installieren Sie jdk.

apt install default-jdk

Vorbereitung der Trainingsdaten

Formatieren Sie den heruntergeladenen eng.train.

out = []
with open("eng.train", "r") as f:
    for line in f:
        line = line.split()
        if len(line) > 2:
            out.append(str(line[0])+"\t"+str(line[-1]).replace("I-","").replace("B-","")+"\n")
        else:
            out.append("\n")

with open("train.tsv") as f:
    f.write(''.join(out))

Ausbildung

Trainingsvorbereitung

  1. Entpacken Sie den Stanford Ner Tagger und geben Sie das entpackte Verzeichnis ein.
  2. Legen Sie train.tsv in dieses Verzeichnis.

Erstellen einer Eigenschaftendatei

train.prop


trainFile = train.tsv
serializeTo = ner-model.ser.gz
map = word=0,answer=1

useClassFeature=true
useWord=true
useNGrams=true
noMidNGrams=true
maxNGramLeng=6
usePrev=true
useNext=true
useSequences=true
usePrevSequences=true
maxLeft=1
useTypeSeqs=true
useTypeSeqs2=true
useTypeySequences=true
wordShape=chris2useLC
useDisjunctive=true

Speichern Sie dies mit dem Dateinamen train.prop.

Durchführung von Schulungen

java -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -prop train.prop

Anschließend wird das Modell als Datei mit dem Namen ner-model.ser.gz erstellt.

Verwenden Sie das Modell aus Python

Mit dem Stanford NER Tagger-Wrapper von nltk können Sie Ihr Modell aus Python verwenden.


import nltk
from nltk.tag.stanford import StanfordNERTagger
sent = "Balack Obama kills people by AK47"
model = "./ner-model.ser.gz"
jar = "./stanford-ner.jar"
tagger = StanfordNERTagger(model, jar, encoding='utf-8')
print(tagger.tag(sent.split()))

[Ausgabe]

[('Balack', 'PER'),
 ('Obama', 'PER'),
 ('kills', 'O'),
 ('people', 'O'),
 ('by', 'O'),
 ('AK47', 'O')]

Referenz

[0] https://nlp.stanford.edu/software/crf-faq.html#a [1] https://blog.sicara.com/train-ner-model-with-nltk-stanford-tagger-english-french-german-6d90573a9486

Recommended Posts

Trainieren Sie Stanford NER Tagger mit Ihren eigenen Daten
Trainiere UGATIT mit deinem eigenen Datensatz
Kommentieren Sie Ihre eigenen Daten, um Mask R-CNN zu trainieren
Löse dein eigenes Labyrinth mit Q-Lernen
Verwalten Sie Ihre Daten mit AWS RDS
Löse dein eigenes Labyrinth mit DQN
[Stärkung des Lernens] DQN mit Ihrer eigenen Bibliothek
Erstellen Sie mit Twisted Ihren eigenen DNS-Server
Fügen Sie Ihre eigenen Bilddaten in Deep Learning ein und spielen Sie damit
Erstellen Sie mit SQLAlchemy Ihren eigenen zusammengesetzten Wert
So importieren Sie Ihr eigenes Modul mit jupyter
Veröffentlichen Sie Ihre eigene Python-Bibliothek auf Homebrew
[Maschinelles Lernen] Erstellen Sie ein Modell für maschinelles Lernen, indem Sie Transferlernen mit Ihrem eigenen Datensatz durchführen
Versuchen Sie, Ihr eigenes AWS-SDK mit bash zu erstellen
Erstellen Sie schnell Ihr eigenes Modul mit setuptools (Python)
Teilen Sie Daten mit Django in projektähnliche Einheiten
Erstelle deinen eigenen Musik-Player mit Bottle0.13 + jPlayer2.5!
Schritte zum Installieren Ihrer eigenen Bibliothek mit pip
Importieren Sie Ihre eigenen Funktionen mit AWS Glue
Daten in RDS mit AWS Glue überschreiben
Ablauf beim Erstellen eines eigenen Pakets mit setup.py mit Python
Memo zum Erstellen einer eigenen Box mit Peppers Python
Rufen Sie mit Go mit cgo Ihre eigene C-Sprachbibliothek auf
Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
Trainieren Sie MNIST-Daten mit PyTorch mithilfe eines neuronalen Netzwerks
Schreiben Sie Ihre eigene Aktivierungsfunktion mit Pytorch (hartes Sigmoid)
Rufen wir Ihre eigene C ++ - Bibliothek mit Python auf (Einstellungen)
Definieren Sie Ihre eigene Distanzfunktion mit k-Mitteln des Scikit-Lernens