2

PHPで同様の単語のテキストスキャナーを作成したいのですが、どこから始めればよいのかわかりません。スキャナーは、段落をスキャンして、データベースで見つかった一致を指摘するか、この段落を改善するのに役立つ特定の単語を提案する必要があります。

最初はデータベースと検索エンジンのスクリプトが使えると思っていたのですが、そうはならないと言われました。

誰かが私を正しい方向に向けてくれれば、私はこれに取り組み始めることができますか?

4

3 に答える 3

2

テキストの類似点を検索するのは大変な作業です。段落を検索して、データベースに同様のテキストがあるかどうかを確認する場合は、「tfidf」アルゴリズムを使用することをお勧めします。私はそれを私の論文で使用しました、そしてそれはうまくいきました。

ただし、必要なすべてを実行する「マスター」アルゴリズムはありません。これは多くの調査であり、使用するテキストのプロパティに常に依存します。NLPに関するある程度の知識も、このような問題の解決に役立つ可能性があります。

類似語のみを見つけるために、私はこのようなものを使用します。彼の助けを願っています。

于 2012-06-28T15:12:55.017 に答える
1

OPコメントの後に最初の回答が間違っていて、コメントが多すぎたため、別の回答を投稿します。

まず、たとえば次のように、段落からすべての単語を推定する必要があります。

$words_array = explode(" ", $paragraph);

次に、特殊文字、スラッシュ、ポイント、コンマなどを削除する必要があります(おそらくstr_replace()を使用)。

2番目のステップでは、次のような同義語のデータベースを構築する必要があります。

| id | word | synonyms |
| 0  | car  | vehicle  |
| 1  | car  | transport |

次に、(段落の各単語に対して)次のようなことを行います。

SELECT synonyms FROM table WHERE word="car"

この後、結果を取得できます。

しかし、これは始まりにすぎません。この方法を最適化する必要があります。例:車両を検索すると、車が返されます。輸送についても同じです。それはあなた次第です!

于 2012-06-28T15:29:26.957 に答える
0

すでにsimilar_text()を試しましたか?使い方はとても簡単で、DB(DBはテキストファイル、SQL DB、さらには配列)を使用するように簡単に適応させることができます。

簡単な例:

// you have to call this function multiple times for each word of the paragraph and for each word of your DB of suggestions
function suggest ($word_of_the_paragraph, $word_taken_from_a_DB) {
    similar_text($word_of_the_paragraph, $word_taken_from_a_DB, $percent);
    if ($percent >= $threshold) {
        echo $word_taken_from_a_DB; // this is the suggested word
    }
}
于 2012-06-28T14:54:38.620 に答える