48

NLTK を使用してテキストから名前付きエンティティを抽出しようとしています。NLTK NER は私の目的に対してあまり正確ではないことがわかったので、独自のタグをいくつか追加したいと考えています。自分の NER をトレーニングする方法を見つけようとしていますが、適切なリソースを見つけることができないようです。NLTK についていくつか質問があります。

  1. 自分のデータを使用して NLTK で Named Entity Recognizer をトレーニングできますか?
  2. 自分のデータを使用してトレーニングできる場合、named_entity.py は変更するファイルですか?
  3. 入力ファイル形式は IOB である必要がありますか。エリック NNP B-PERSON ?
  4. nltkクックブックとPythonを使用したnlp以外に、使用できるリソースはありますか?

この点で本当に助けていただければ幸いです

4

6 に答える 6

24

NLTK/Python を使用することにコミットしていますか? 私はあなたと同じ問題に遭遇し、スタンフォードの名前付き実体認識エンジンを使用すると、はるかに良い結果が得られました: http://nlp.stanford.edu/software/CRF-NER.shtml。独自のデータを使用して分類器をトレーニングするプロセスは、FAQ で詳しく説明されています。

本当に NLTK を使用する必要がある場合は、メーリング リストにアクセスして、他のユーザーからのアドバイスを求めます: http://groups.google.com/group/nltk-users .

お役に立てれば!

于 2012-07-09T16:16:25.660 に答える
14

nltk と一緒に Stanford NER を簡単に使用できます。Pythonスクリプトは次のようになります

from nltk.tag.stanford import NERTagger
import os
java_path = "/Java/jdk1.8.0_45/bin/java.exe"
os.environ['JAVAHOME'] = java_path
st = NERTagger('../ner-model.ser.gz','../stanford-ner.jar')
tagging = st.tag(text.split())   

独自のデータをトレーニングしてモデルを作成するには、Stanford NER FAQ の最初の質問を参照してください。

リンクはhttp://nlp.stanford.edu/software/crf-faq.shtmlです

于 2015-11-25T05:45:23.637 に答える
1

私もこの問題を抱えていましたが、なんとか解決しました。独自のトレーニング データを使用できます。このための主な要件/手順をgithub リポジトリに文書化しました。

私はNLTK-trainerを使用したので、基本的にはトレーニング データを正しい形式 (トークン NNP B タグ) で取得し、トレーニング スクリプトを実行する必要があります。詳細については、リポジトリを確認してください。

于 2017-10-02T15:46:54.937 に答える
1

nltk.chunk.named_entityモジュールには、NER タガーをトレーニングする関数がいくつかあります。ただし、これらは ACE コーパス用に特別に作成されたものであり、完全にクリーンアップされたわけではないため、これらを参考にして独自のトレーニング手順を作成する必要があります。

また、NLTK を使用して GMB コーパスをトレーニングするプロセスを詳しく説明している2 つの比較的最近のガイド ( 1 2 ) がオンラインにあります。

ただし、上記の回答で述べたように、多くのツールが利用できるようになったので、合理化されたトレーニング プロセスが必要な場合は、実際には NLTK に頼る必要はありません。CoreNLP や spaCy などのツールキットは、はるかに優れた仕事をします。NLTK を使用することは、独自のトレーニング コードをゼロから作成することとそれほど変わらないため、それほど価値はありません。NLTK と OpenNLP は、最近の NLP の進歩が爆発する前の過去の時代に属していると見なすことができます。

于 2018-07-29T22:24:03.680 に答える