契約テキストから開始日/終了日などをキャッチするルールベースのシステムを作成する方法はありますか?ここにいくつかの実際の例があります。スペイシーに自動検出させたい日付エンティティを太字にしています。あなたがスペイシーとは異なる他のアイデアを持っているなら、それもOKです!
このリースの初期期間は、February 1, 2012
(「リース開始日」)に始まり、January 31, 2017
(「初期リース期間」)に満了する5年間です。
期間:January 1, 2007
( "開始日")で始まり、December 31, 2007
( "有効期限")で終わる1年間。
このリース契約は、January 1, 2014
からDecember 31, 2028
までの15年間有効です。
2種類のメソッドを明確に区別する必要があると思います。
1)統計モデル/機械学習、別名NERモデル。これらは、特定のトークン、または複数の連続したトークンが日付であるかどうかを判断するときに、文のコンテキストを考慮に入れます。 spaCyには事前に構築されたNERモデルがあり、ダウンロードして特定のデータを試すことができます。それらのエンティティを検索する必要があります(doc.ents
)ent.label_ == DATE
。これらのエンティティを取得したら、それらを日付パーサーで実行して、実際の日付を理解できます。詳細は here も参照してください。
2)ルールベースのエンティティ認識。ここでは、日付がどのように見えるかを指定して、ルールを自分で定義する必要があります。 XX/XX/XXXX
(X
は数字です)ただし、user1558604が指摘したように、日付の異なる表現を認識したい場合は、複数の異なるルールを記述する必要があります。 spaCyのルールベースのマッチング方法の概要 こちら をご覧ください。
CoreNLPのSUTimeを使用して簡単に実行できます: https://github.com/FraBle/python-sutime