0

スタンフォード NRE ツールを使用して名前付きエンティティにタグを付けようとすると、次のような出力が得られます。

A jury in <ORGANIZATION>Marion County Superior Court</ORGANIZATION> was expected to begin deliberations in the case on <DATE>Wednesday</DATE> or <DATE>Thursday</DATE>.

もちろん、ルートなしで XML を処理しても機能しないため、次のように追加しました。

<root>A jury in <ORGANIZATION>Marion County Superior Court</ORGANIZATION> was expected to begin deliberations in the case on <DATE>Wednesday</DATE> or <DATE>Thursday</DATE>.</root>

この方法でツリーを構築しようとしました: python の lxml でインライン タグを削除しましたが、うまくいきません... 行で次のエラーが発生しますtree = etree.fromstring(text):

lxml.etree.XMLSyntaxError: xmlParseEntityRef: no name, line 1, column 1793

誰かがこれに対する解決策を知っていますか? あるいは、inlineXML タグを使用して任意のテキストからツリーを構築し、タグ付けされたトークンのみを保持し、残りのテキストを削除/無視する別の方法かもしれません。

4

1 に答える 1

0

最終的には、パーサーやツリーを使用せずに、正規表現のみを使用しました。これは、素晴らしく高速に動作するコードです。

import re
NER = ['TIME','LOCATION','ORGANISATION','PERSON','MONEY','PERCENT','DATA']
entities = {}
for cat in NER:
    regex_cat = re.compile('<'+cat+'>(.*?)</'+cat+'>')
    entities[cat] = re.findall(regex_cat,data)

これdataは単なるテキストの文字列です。正規表現を使用して、指定されたカテゴリのすべてのエンティティを検索NERし、辞書にリストとして保存します。これは、すべての inlineXML 文字列に使用できます。ここNERで、 は文字列内の可能なすべてのタグのリストです。

于 2013-04-16T09:39:49.730 に答える