さまざまなデータフィールドに基づいて製品を分類しようとしています。製品名の検索用語を照合するだけである程度の成功を収めましたが、説明には関連性のない追加情報が多く含まれている傾向があるため、説明などの大きなテキストの場合は、この単純なアプローチは機能しません。カテゴリに。
この問題を解決するための私の考えは、テキストからエンティティと述語を抽出し、消去法を使用して、どれが主語でなければならないかを判断することでした。しかし、これに対するより良いアプローチがあれば、私に知らせてください。
したがって、例として、次の製品の説明を取り上げます。
ドルマンスリーブがモダンなひねりを加えたクラシックなスウェットシャツは、非常に用途が広く、毎日にぴったりです。リラックスした形のバランスをとるために、ハーレムパンツまたはジーンズやフィットしたスカートと一緒に着用してください。リブ編みのドルマンスリーブ、リブネック、裾を備えたワイドネック。前面にVインサート。
すべてを説明することはしませんが、そこから抽出することを期待するいくつかの例を次に示します。
E1。クラシックなスウェットシャツ
P1。 ...ドルマンの袖があります
P2。 ...非常に用途が広い
P3。 ...一緒に着用...(命令は述語ですか?)
E2。ハーレムパンツ
...等
したがって、上記を使用すると、段落が焦点を当てている主要なエンティティが「古典的なスウェットシャツ」であることがわかると思います。残りの文は述語で始まり、最初の文にあるため、ある程度の重み付けを適用できます。 。その後、抽出されたテキストを用語や類義語のインデックスと照合するという元のアプローチに戻ることができました。
この問題を解決する正式なアプローチ/アルゴリズムはありますか?それとも、私が概説したアプローチは失敗する運命にあり、私は何か他のことを試みるべきだと思いますか? ;)
十分なトレーニングデータセットを構築できる場合、NER(Named Entity Extraction)はこの実装のほとんどを自動化する必要があります。例えば。ツールキットの1つ(Apache OpenNLP)を使用すると、トレーニングデータは次のようになります。
ドルマンスリーブがモダンなひねりを加えたクラシックなスウェットシャツは、非常に用途が広く、毎日にぴったりです。リラックスした形のバランスをとるために、ハーレムパンツまたはジーンズやフィットしたスカートと一緒に着用してください。リブ編みのドルマンスリーブ、リブネック、裾を備えたワイドネック。前面にVインサート。
このトレーニングテキストにより、OpenNLPはテキストをトークンに分割し、連続するトークンの各セットの述語(start_of_product_name、end_of_product_name、no_op)の確率を評価できます。
このアプローチでは、タグ付けされたテキストにかなりの量が必要になるため、ツールキットは、トークンシーケンスと述語の確率との関係を確立する言語モデルを構築できます。