2011-03-03 9 views
3

私の要求は、クエリに応答して自然言語文(英語のみ)から数値データを認識して抽出することです。プラットフォームはJavaです。例えば、ユーザクエリは「エベレストの高さとは何か」であり、以下のように、私たちは、段落を持っている場合:数値データを認識するための自然言語処理

1856年

は、英領インドの大三角測量は、エベレストの最初の公表の高さを確立し、その後として知られ、ピークXV、29,002フィート(8,840 m)。 1865年にエベレストは、当時の英国調査員アンドリュー・ウォー(Andrew Waugh)氏の推薦により、ロイヤル・ジオグラフィック・ソサエティ(Royal Geographical Society)の正式な英名を与えられました。 4] Chomolungmaは何世紀にもわたってチベット人に共通して使われていたが、Waughはネパールとチベットが外国人に閉鎖されていたため、地元名を提案することができなかった。

ユーザーのクエリ "Height of mount Everest"の段落からは、回答として29002 ftまたは8840 mを取得する必要があります。誰でもJavaでそれを行う可能な方法を提案できますか?同じオープンソースライブラリはありますか?

+1

おそらくウィキの記事(http://en.wikipedia.org/wiki/List_of_natural_language_processing_toolkits)があなたを助けてくれるかもしれないし、おそらくそれをグーグル(http://www.google.com/search?sourceid=chrome&ie=UTF-8&q = java +自然+言語+解析)。スタンフォードのNLPキットは、かなりよく文書化されており、GPLされています。 – Tim

+0

Timに感謝します。私はスタンフォードNLPを見ていました。しかし、私はそれが私のプロジェクトにとってはやや複雑すぎると思っていました。簡単な選択肢はありますか? –

答えて

3

明らかに、これを行うことは非常に困難です。しかしそれが割り当てであれば、私は予想が少し下がっていると推測しています。うまくいけば、あなたが始めるためのいくつかの考えがあります:

私は2つの部分に問題を分割します。質問ブロックを解析し、次に回答ブロックを渡す。質問ブロックから、2つの情報、探しているものの名​​詞、そして回答のタイプを知る必要があります。この場合、名詞はエベレストであり、タイプは高さです。データの「タイプ」を使用すると、入力文字列をかなり早く検索して辞書を作成できます(たとえば、「高さ」、「重量」、「距離」、「年齢」)。名詞はより難しいので、質問の中のすべての非タイプが潜在的な名詞であると仮定して、おそらく既知の非名詞の辞書を削除するとしましょう( "at"、 "the"、 "of"等。)。

質問から名詞を特定して入力すると、回答ブロックのスキャンを開始できます。私はそれを文章に分割することから始めます。次に、それぞれの名詞についてそれぞれの文章をスキャンします。その文の中に1つが見つかった場合は、数字のために文を再度スキャンする必要があります(可能な空白またはカンマ区切りを考慮して)。最後に、測定タイプで見つかった数値を「周り」に見ていく必要があります。この場合、質問から解析した「タイプ」は「高さ」でした。あなたは、測定値への型の写像を作成する必要があります。したがって、 "高さ"は "km、ft、in、cm、m"などを写像します。もしそれらの型の周りにこれらの型のいずれかがあれば、答え。

あなたが始めることを望みます。上記のように、これは堅牢で商業的な解決策ではありません。それは宿題です。

+0

ありがとうございました。それは私にそれを実装する方法のアイデアを与えました。それはまさに私が探していたものでした。オープンソースのパッケージを提案してもらえますか? –

関連する問題