すべてのWebサイト開発者の前に、遅かれ早かれ、サイト検索を実装するという疑問が生じます。 検索は単語に基づいていることが望ましい、すなわち 単語の終わりを考慮しませんでした。 この目的のために、プログラムは語彙の基礎を強調するステマリーで使用されます。 多くのステマーは辞書に基づいて機能し、中小規模のプロジェクトで巨大な辞書を使用しないために、確率論的な形態素解析を使用できます。 その際立った機能は、データベースのサイズが比較的小さいため、データベースの負荷がないことです。 ベースの品質割り当てに大きな損失なし。
スタンミングは、特定のソースワードの単語の基礎を見つけるプロセスです。 単語のベースは、単語の形態学的ルートと必ずしも一致しません。 ステミングアルゴリズムは、コンピューターサイエンスにおける長年の問題です。 このプロセスは、調査システムでユーザーの検索クエリを要約するために使用されます。
ステミングの特定の実装は、ステミングアルゴリズムまたは単にステマーと呼ばれます。
最近、ロシア語とウクライナ語に適切な品質のステマーが必要になり、
Andrey KovalenkoのWebサイトでインターネット
を掘り下げて、非常に興味深いステマーを見つけました。
ステマーの説明
それはC ++で実装されていたので、とても動揺しました。 Cで書かれているのは気分を害するものではありませんでしたが、仕様(PHPのみ)のために使用できなかったという事実です。 私はこれに同意せず、デバッガーで武装して、このアプリケーションをPHPに移植しました。
サイトにはPHP用のモジュールの形でより生産的なステマーがありますが、私にとっては1秒間に何ワードが12,000または2-3千を処理するかはあまり重要ではありません、私にとっては1000で十分です(速度をテストしませんでした)
移植されたクラスコード(stemka.php)
動作させる方法:
オリジナルのライブラリをダウンロードしますライブラリフォルダーから
オリジナルのライブラリを取得します辞書をファジー* .inc
辞書をPHPに便利な形式にします。 データをバイナリファイルに変換し、file_get_contents関数を使用してダウンロードしました。
変換する前に、辞書を使用してC ++ファイルを編集する必要があります。
1.タグ「<?Php」をファイルの先頭に追加します
2.ファイルの最後に「?>」を追加します
3.「{」を「$ fuzzy = array(」に置き換えます
4.「}」を「);」に置き換えます。
その後、変換スクリプトを実行すると、ファイルが変換されます。
<?php
include "fuzzyuk.inc" ;
$ fp = fopen ( 'fuzzyuk.dat' 、 'w' ) ;
foreach ( $ v として ファジィ $ )
fwrite ( $ fp 、 chr ( $ v ) ) ;
fclose ( $ fp ) ;
include "fuzzyru.inc" ;
$ fp = fopen ( 'fuzzyru.dat' 、 'w' ) ;
foreach ( $ v として ファジィ $ )
fwrite ( $ fp 、 chr ( $ v ) ) ;
fclose ( $ fp ) ;
?>
変換したくない場合は、変換した辞書
fuzzyuk.dat( 243 ) fuzzyru.dat(403)
ステマーは準備完了です。 使用例:
<?php
include "stemka.php" ;
$ stemka = new stemka ( ) ;
$ str = 'rewrite' ;
echo $ stemka- > GetStemCrop ( $ str 、 'uk' ) ;
?>
または
デモ
このトピックで完全にカバーされているふりをするのではなく、コードを共有することにしました。突然誰かが役に立ちます...
批判してマイナスすることができます。