サンプル・プログラム
このプログラムを実行するには、MeCab とユーザー辞書が必要である。「PHPで MeCabのユーザー辞書を作成する」を参照のこと。

プログラムの流れは、「PHPで2つの文章の類似度を計算する(KAKASI版)」とほぼ同じである。

プログラムの流れは、「PHPで2つの文章の類似度を計算する(KAKASI版)」とほぼ同じである。
サンプル・プログラムの実行例

「PHPで2つの文章の類似度を計算する(KAKASI版)」と同じテキストを使って実行してみよう。
まず、「元のテキスト」として、以下のWikipediaの引用文を入れる。これは「PHP: Hypertext Preprocessor」からの抜粋である。
2つめの文章は、一見すると元の文章とは異なっているが、じつはWikipediaの引用文の順番を変えただけである。
ユーザー辞書が効果を発揮し、KAKASI版より類似度が高くなっている。

次に、「比較するテキスト」に以下の文章を入れて実行してみていただきたい。これは「PHPとは何か」(ぱふぅ家のホームページ)の冒頭部分である。

これもKAKASI版に比べて類似度が高くなっている。

最後に、PHPとはまったく関係ない以下のテキストを「比較するテキスト」に入れてみると――
まず、「元のテキスト」として、以下のWikipediaの引用文を入れる。これは「PHP: Hypertext Preprocessor」からの抜粋である。
PHP:Hypertext Preprocessor(ピー・エイチ・ピー:ハイパーテキストプリプロセッサー)とは、動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語、およびその言語処理系である。PHPは、HTML埋め込み型のサーバサイド・スクリプト言語として分類される。この言語処理系自体は、C言語で記述されている。「比較するテキスト」には、以下の文章を入れてみよう。
PHP(Hypertext Preprocessor;ピー・エイチ・ピー)とは、動的にHTMLデータを生成することによって、動的なウェブページを実現すること目的としたプログラミング言語である。PHPは、HTML埋め込み型のサーバサイド・スクリプト言語の一種で、処理系自体はC言語で記述されている。結果は 93.3% である。
2つめの文章は、一見すると元の文章とは異なっているが、じつはWikipediaの引用文の順番を変えただけである。
ユーザー辞書が効果を発揮し、KAKASI版より類似度が高くなっている。

次に、「比較するテキスト」に以下の文章を入れて実行してみていただきたい。これは「PHPとは何か」(ぱふぅ家のホームページ)の冒頭部分である。
「PHP(Hypertext Preprocessor)」は、オープンソースのサーバ・サイド・スクリプト言語である。サーバ・サイド・スクリプトとは、データベースサーバなどのサーバ群と Web ブラウザ(クライアント)を結ぶインターフェースの役割をするもので、Webサーバ上で動作する。HTMLに比べて、動的なページを実現することができる。結果は 59.2% となる。

これもKAKASI版に比べて類似度が高くなっている。

最後に、PHPとはまったく関係ない以下のテキストを「比較するテキスト」に入れてみると――
さきたま古墳公園(埼玉県行田市大字埼玉4834)は、8基の前方後円墳と1基の円墳が集中する東日本最大の古墳遺跡である。類似度は 17.6% となった。similar_text を使った結果では 19.2% より小さく、期待した結果が得られた。
1938年(昭和13年)8月に国の史跡の指定を受け、1968年(昭和43年)には金錯銘鉄剣(きんさくめいてっけん)が出土したことで一躍脚光を浴びた。
参考サイト
- MeCab:公式サイト
- PHPで2つの文章の類似度を計算する:ぱふぅ家のホームページ
- PHPで2つの文章の類似度を計算する(KAKASI版):ぱふぅ家のホームページ
- PHPで2つの文章の類似度を計算する(WebAPI版):ぱふぅ家のホームページ
(この項おわり)
前回、形態素解析ツール「MeCab」のユーザー辞書を作成する方法を説明した。そこで今回は、このユーザー辞書を使って、さらに類似度計算の精度を上げてみる。
(2021年6月19日)PHP8対応,リファラ・チェック追加