Hi here's my [KEYWORD phone number], let me know when you wanna hangout: [PHONE 7802708523]. I live in a [PROP_TYPE condo] in [CITY New York]
という形式のタグ付きデータを持つドキュメントがあります。これらのタイプのタグ付きドキュメントに基づいてモデルを訓練し、そのモデルを使用して新しいドキュメントにタグを付けたいとします。これはNLTKでも可能ですか?私はchunkingとNLTK-Trainerのスクリプトを見てきましたが、これらはタグとコーパスのセットが限定されていますが、私のデータセットにはカスタムタグがあります。NLTKのカスタムタグを使用したタグ付け練習者
答えて
あなたが解決しようとしている問題は、最も一般的にはNamed Entity Recognition(NER)と呼ばれています。問題を解決するのに役立つ多くのアルゴリズムがありますが、最も重要な概念は、テキストデータをシーケンスタガーの適切なフォーマットに変換する必要があるということです。ここではBIOフォーマットの例である:
I O
love O
Paris B-LOC
and O
New B-LOC
York I-LOC
. O
そこから、あなたが分類器のいずれかのタイプを訓練するために選択することができます、などナイーブベイズ、SVM、MAXENT、CRF、このようなマルチため、現在最も人気のあるアルゴリズムは、トークンシーケンス分類タスクはCRFです。上記の形式(例:YamCha、CRF++、CRFSuite、Wapiti)を使用してファイルからBIOモデルを訓練させるツールがあります。 Pythonを使用している場合は、NLTKに加えてscikit-learn、python-crfsuiteおよびPyStructを調べることができます。
NLTKツールボックスは、3列形式の 'word POS-tag BIO-tag'を使用します。処理パイプラインにPOSタグ付けステップを追加することは害ではありません。 – alexis
@AleksandarSavkovは既に書いていますが、これは本質的に名前付きエンティティ認識(NER)タスクであり、より一般的にはチャンク化タスクです。それを行う方法は、NLTK本のchapter 7でうまくカバーされています。 regexpタグ付けのセクションを無視し、セクション3のDeveloping and evaluating chunkersの方法を使用することをお勧めします。これには、チャンネルを作成するためにそのまま使用できるコードサンプルが含まれています(ConsecutiveNPChunkTagger
)。あなたの責任は、あなたに良いパフォーマンスを与える機能を選択することです。
データをNLTKのアーキテクチャが想定するIOBフォーマットに変換する必要があります。一部の発言タグが必要なので、最初のステップは、POSタガーを使用して入力を実行することです。 nltk.pos_tag()
は十分な仕事をします([KEYWORD ...]
のようなマークアップを取り除くと)、追加のソフトウェアをインストールする必要はありません。あなたのコーパスは、次の形式( - POSタグ - 単語IOBタグ)であるときは、認識装置を訓練する準備ができている:
Hi NNP O
here RB O
's POS O
my PRP$ O
phone NN B-KEYWORD
number NN I-KEYWORD
, , O
let VB O
me PRP O
...
ありがとうございます。私はPOSタガーで入力を実行した後のステップについては不明です。自分のカスタムタグを挿入するにはどうすればいいですか?たぶん私はあなたが 'KEYWORD'のようなマークアップを取り除くことによって何を意味するのか誤解したかもしれません –
私はあなたのコメントを見ました...このレスポンスはあなた自身のコメントとほとんど同じくらい遅いです。私が「マークアップを取り除く」という意味は、POSタグがトークン化されたプレーンテキストで動作することです。コーパスからチャンクラベルを削除し、NLTKでテキストをトークン化し、タグ付けし、チャンクを再度挿入する必要があります(これは、IOB形式で行う必要があります)。それでもやり方がわからない場合は、私の答えを編集してもっと説明することができます。 – alexis
ありがとうございました。最終的な出力は 'word POS-tag Custom-tag'のリストになるでしょうか? –
- 1. NLTKで茶色のタグを使用したPOSタグ付け
- 2. 練習シェルプログラミング(初心者)
- 3. Odoo練習初心者
- 4. NLTK単一単語品詞タグ付け
- 5. タグ付きユニオンとリテラルタイプを使用したタグ付け
- 6. カスタムコーパスを使用したNLTKのNERモデルの学習
- 7. NLTKのための私自身のデータセットを読むPerceptronTaggerを使用した音声タグ付けの部分
- 8. x-amzタグ付けリクエストヘッダーを使用したAWSオブジェクトのタグ付け
- 9. nltkタグ付きドキュメントの評価機能を使用
- 10. マレットPOSタグ付け学習時間
- 11. 関数を使用した練習C++プログラムのデバッグVisual Studio 2015
- 12. C#スレッド:初心者のための練習
- 13. 複数の転用練習
- 14. NLTK(posタグ付け)を使って動詞の無限型を得る方法
- 15. ウェブページの練習
- 16. トークンでスプリングセキュリティプラグインを使用するための良い練習
- 17. タグなしコーパスをタグ付き(NLTK)に変換する
- 18. 練習用グリッドmvc with viewmodel
- 19. POSタグ付け - NLTKは名詞が動詞だと思う
- 20. NLTK - チャンクされたツリーをリストに変換する(IOBタグ付け)
- 21. web2pyフレームワークを使用した@mention(タグ付けフレンド)の実装
- 22. angleJSを使用したタグ付けのカスタムディレクティブ
- 23. TeamCity + MSBuild:VCSビルド番号を使用したデプロイメントのタグ付け
- 24. mailgun - "o:tag"を使用した複数のタグ付け
- 25. python 2.7のmp3ファイルにeyeD3を使用したタグ付け
- 26. 簡単なプログラミングの練習(モジュラス演算を使用して)
- 27. PHPレッスン/練習。
- 28. Haarカスケード練習
- 29. 練習問題?
- 30. try-catch-finallyを使用して練習してください
BIOチャンクタグのhttpを参照して、右方向のようです: //lingpipe-blog.com/2009/10/14/coding-chunkers-as-taggers-io-bio-bmew-and-bmewo/。あなたの入力をどのようにエンコードするかによって、チャンク後に 'PHONE'や' KEYWORD'をタグ付けするために細かい分類器が必要になるかもしれません。 – alvas
いくつか例を挙げてください。彼らはすべて電話番号ですか?たぶん[タグ:情報抽出]を追加しますか? – reynoldsnlp
いいえ、データは変更されており、電話番号、住所、名前、日付などが含まれています.BIOチャンクタグの場合は、見たことがあるコードサンプルはありますか? –