Spacy は、数字と午前/午後の部分が空白で区切られていない午前/午後の表現を正しくトークン化できないようです。
例: 「午前 9 時に何かが起こった」は、予期しないトークン セットを生成します: トークン オブジェクトのリスト: [何か、起こった、LIKE_URL、午前]
「午前 9 時に何かが起こった」は問題なく機能しますが、トークン オブジェクトのリスト: [何か、起こった、午前 9 時]
再現するには:
>>> import spacy
>>> nlp = spacy.load('en')
>>> doc = nlp(u"Something happened at 9am")
>>> tokens = [x for x in doc]
>>> tokens
[Something, happened, at, LIKE_URL, am]
>>> doc2 = nlp("Something happened at 9 am")
>>> tokens2 = [x for x in doc]
>>> tokens2
[Something, happened, at, 9, am]
Token オブジェクトにドリルダウンすると、トークンの「orth」表現が 9 であることがわかります。同様に、「8am」を試すと、トークンは「IS_UPPER」を読み取り、トークンの「orth」表現は 8 です。 .
特に、これは私にとっては問題です。なぜなら、より広いコンテキストでトークンの範囲を追跡する必要があるためです。テキストでは「8」と表示されるが、トークン形式では「IS_UPPER」と表示されるトークンは、私の範囲を 7 ずらす原因となります (つまり、次のトークンの実際のドキュメント レベルのインデックス (token.idx) は 7 だけずれています)
上記の形式で示されることがある am/pm 表現を含む spacy を含むドキュメントを処理し、正確なトークン スパンを取得するにはどうすればよいですか?
Spacy 1.4.0でPython 2.7.12を使用しています