NLTKを使用して、テキストから名前付きエンティティを抽出しようとしています。 NLTK NERは私の目的にとってあまり正確ではないことがわかりました。自分のタグをさらに追加したいと思います。私は自分のNERを訓練する方法を探していましたが、適切なリソースを見つけることができないようです。 NLTK-に関していくつか質問があります
この点で本当に助かります
NLTK/Pythonの使用にコミットしていますか?私はあなたと同じ問題に遭遇し、スタンフォード大学の名前付きエンティティレコグナイザーを使用して、はるかに良い結果を得ました: http://nlp.stanford.edu/software/CRF-NER.shtml 。独自のデータを使用して分類子をトレーニングするプロセスは、FAQで非常によく文書化されています。
本当にNLTKを使用する必要がある場合は、他のユーザーからのアドバイスを得るためにメーリングリストにアクセスします: http://groups.google.com/group/nltk-users 。
お役に立てれば!
スタンフォードNERとnltkを簡単に使用できます。 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の最初の質問を参照してください。
nltk.chunk.named_entity モジュールには、NERタガーをトレーニングする関数がいくつかあります。ただし、ACEコーパス用に特別に作成されており、完全にクリーンアップされているわけではないため、それらを参照として独自のトレーニング手順を作成する必要があります。
また、比較的最近の2つのガイド( 12 )があり、NLTKを使用してGMBコーパスをトレーニングするプロセスをオンラインで詳しく説明しています。
ただし、上記の回答で述べたように、多くのツールが利用できるようになったため、合理化されたトレーニングプロセスが必要な場合、NLTKに頼る必要はありません。 CoreNLPやspaCyなどのツールキットは、はるかに優れた仕事をします。 NLTKを使用することは、最初から独自のトレーニングコードを記述することとそれほど変わらないので、そうすることにそれほど価値はありません。 NLTKとOpenNLPは、NLPの最近の進歩が爆発する前の過去の時代に何らかの形で属していると見なすことができます。
私もこの問題を抱えていましたが、どうにか解決しました。独自のトレーニングデータを使用できます。 github repository でこれに関する主な要件/手順を文書化しました。
NLTK-trainer を使用したため、基本的には正しい形式(トークンNNP Bタグ)でトレーニングデータを取得し、トレーニングスクリプトを実行する必要があります。詳細については、リポジトリを確認してください。