web-dev-qa-db-ja.com

スペイシーで日付を検出する

契約テキストから開始日/終了日などをキャッチするルールベースのシステムを作成する方法はありますか?ここにいくつかの実際の例があります。スペイシーに自動検出させたい日付エンティティを太字にしています。あなたがスペイシーとは異なる他のアイデアを持っているなら、それもOKです!

  1. このリースの初期期間は、February 1, 2012(「リース開始日」)に始まり、January 31, 2017(「初期リース期間」)に満了する5年間です。

  2. 期間:January 1, 2007( "開始日")で始まり、December 31, 2007( "有効期限")で終わる1年間。

  3. このリース契約は、January 1, 2014からDecember 31, 2028までの15年間有効です。

2
yishairasowsky

2種類のメソッドを明確に区別する必要があると思います。

1)統計モデル/機械学習、別名NERモデル。これらは、特定のトークン、または複数の連続したトークンが日付であるかどうかを判断するときに、文のコンテキストを考慮に入れます。 spaCyには事前に構築されたNERモデルがあり、ダウンロードして特定のデータを試すことができます。それらのエンティティを検索する必要があります(doc.entsent.label_ == DATE。これらのエンティティを取得したら、それらを日付パーサーで実行して、実際の日付を理解できます。詳細は here も参照してください。

2)ルールベースのエンティティ認識。ここでは、日付がどのように見えるかを指定して、ルールを自分で定義する必要があります。 XX/XX/XXXXXは数字です)ただし、user1558604が指摘したように、日付の異なる表現を認識したい場合は、複数の異なるルールを記述する必要があります。 spaCyのルールベースのマッチング方法の概要 こちら をご覧ください。

2
Sofie VL

CoreNLPのSUTimeを使用して簡単に実行できます: https://github.com/FraBle/python-sutime

0
anas17in