次の形式の平文があるとします。
John Doe、Suzy Q、Sue N. Sough、Michael Blanks、ウィザーズ大学、イギリス
John Doe、Normal Place、ポルトガルおよび Suzy Q、Other Place、フランス
John Doe と Suzy Q、3 番目の場所、ドイツ
John Doe、Suzy Q および Doug Z Doug、4 番目のロケーション、ポーランドおよび Simon Pft、5 番目のロケーション、韓国
正しく解析されると、データは次のようになります。
[{
'organization': "Wizards University",
'country': "United Kingdom",
'authors': ["John Doe", "Suzy Q", "Sue N. Sough", "Michael Blanks"]
}]
[ {
'organization': "Normal Place",
'country': "Portugal",
'authors': ["John Doe"]
}, {
'organization': "Other Place",
'country': "France",
'authors': ["Suzie Q"]
} ]
[{
'organization': "Third Location",
'country': "Germany",
'authors': ["John Doe", "Suzy Q"]
}]
[ {
'organization': "Fourth Location",
'country': "Poland",
'authors': ["John Doe", "Suzy Q", "Doug Z. Doug"]
}, {
'organization': "Fifth Location",
'country': "Korea",
'authors': ["Simon Pft"]
} ]
人間がこのテキストを見て正しく解析するのは非常に簡単ですが、一緒にリストされた一連の名前を見ているかどうかを読み取って認識できるスクリプトを作成する方法があるかどうか疑問に思っています。and
つまり、コンマとs を探すだけのばかげたパーサーから始めて、
John Doe、Suzy Q、Sue N. Sough、Michael Blanks、ウィザーズ大学、イギリス
のように見える
John Doe、Normal Place、ポルトガルおよび Suzy Q、Other Place、フランス
次のように解析できます。
[{
'organization': "Suzy Q",
'country': "Sue N. Sough",
'authors': ["John Doe"]
} , {
'organization': "Wizards University",
'country': "United Kingdom",
'authors': ["Michael Blanks"]
}]
決定的で迷惑な追加!
国は、特に組織の名前に暗示されている場合は特に表示されません。
したがって、レコードは次のようになる場合があります。
John Doe、Suzy Q、Sue N. Sough、Michael Blanks、ウィザーズ大学
John Doe、ポルトガル大学、Suzy Q、Other Place、フランス
John Doe と Suzy Q、3 番目の場所
John Doe, Suzy Q and Doug Z Doug, Fourth Location, Polish and Simon Pft, 高麗大学
そのため、国名 (韓国、韓国、大韓民国など、非標準的な方法で書式設定されている) を使用できるレコードもありますが、すべてのレコードで機能するとは限りません。
私がやったことは…</h3>
…私が知っている最もスマートなパターン認識ツールを使用していました - 私。探した正規表現の検索と置換を使用してドキュメントをスキャンしたところ、\s*(,|&|\band\b)\s*
それが名前の間で|
ある場合は で置き換え、名前のグループ間である場合は で置き換えました;
。幸いなことに、データ セットは十分に小さかった (合計 100 をはるかに下回る) ため、費やした時間は、十分にインテリジェントなパーサーを作成するのにかかる時間よりも短くなりました。私はベイジアン分類器を使い始めました。これは、人々の名前と組織を区別するのに問題ありませんでしたが、それでも、私の目的にはうまくいかないほど頻繁にどちらか一方を誤認しました。