2

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を使用しています

4

1 に答える 1