2015-11-15 7 views
5

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でも可能ですか?私はchunkingNLTK-Trainerのスクリプトを見てきましたが、これらはタグとコーパスのセットが限定されていますが、私のデータセットにはカスタムタグがあります。NLTKのカスタムタグを使用したタグ付け練習者

+0

BIOチャンクタグのhttpを参照して、右方向のようです: //lingpipe-blog.com/2009/10/14/coding-chunkers-as-taggers-io-bio-bmew-and-bmewo/。あなたの入力をどのようにエンコードするかによって、チャンク後に 'PHONE'や' KEYWORD'をタグ付けするために細かい分類器が必要になるかもしれません。 – alvas

+0

いくつか例を挙げてください。彼らはすべて電話番号ですか?たぶん[タグ:情報抽出]を追加しますか? – reynoldsnlp

+0

いいえ、データは変更されており、電話番号、住所、名前、日付などが含まれています.BIOチャンクタグの場合は、見たことがあるコードサンプルはありますか? –

答えて

1

あなたが解決しようとしている問題は、最も一般的には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です。上記の形式(例:YamChaCRF++CRFSuiteWapiti)を使用してファイルからBIOモデルを訓練させるツールがあります。 Pythonを使用している場合は、NLTKに加えてscikit-learnpython-crfsuiteおよびPyStructを調べることができます。

+1

NLTKツールボックスは、3列形式の 'word POS-tag BIO-tag'を使用します。処理パイプラインにPOSタグ付けステップを追加することは害ではありません。 – alexis

4

@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 
... 
+0

ありがとうございます。私はPOSタガーで入力を実行した後のステップについては不明です。自分のカスタムタグを挿入するにはどうすればいいですか?たぶん私はあなたが 'KEYWORD'のようなマークアップを取り除くことによって何を意味するのか誤解したかもしれません –

+1

私はあなたのコメントを見ました...このレスポンスはあなた自身のコメントとほとんど同じくらい遅いです。私が「マークアップを取り除く」という意味は、POSタグがトークン化されたプレーンテキストで動作することです。コーパスからチャンクラベルを削除し、NLTKでテキストをトークン化し、タグ付けし、チャンクを再度挿入する必要があります(これは、IOB形式で行う必要があります)。それでもやり方がわからない場合は、私の答えを編集してもっと説明することができます。 – alexis

+0

ありがとうございました。最終的な出力は 'word POS-tag Custom-tag'のリストになるでしょうか? –

関連する問題