n-gramを使用して(できればPHPで)いくつかのアプリケーションを実装したいと思います。
ほとんどの目的に適したn-gramのタイプはどれですか?単語レベルまたは文字レベルのn-gram?PHPでn-gram-tokenizerをどのように実装できますか?
まず、N-gramとは何かを知りたいです。これは正しいです?それは私がn-gramを理解する方法です:
文:「私はニューヨークに住んでいます。」
単語レベルのバイグラム(nの場合は2):「#I」、「I live」、「live in」、「in NY」、「NY#」
文字レベルのバイグラム(nの場合は2): "#I"、 "I#"、 "#l"、 "li"、 "iv"、 "ve"、 "e#"、 "#i"、 "in"、 " n# "、"#N "、" NY "、" Y# "
このn-gram-partsの配列がある場合、重複するものを削除し、各部分に頻度を与えるカウンターを追加します。
単語レベルのバイグラム:[1、1、1、1、1]
文字レベルのバイグラム:[2、1、1、...]
これは正しいです?
さらに、n-gramで何ができるかについてもっと知りたいと思います。
- n-gramを使用してテキストの言語を識別するにはどうすればよいですか?
- バイリンガルコーパスがなくても、n-gramを使って機械翻訳を行うことはできますか?
- スパムフィルター(スパム、ハム)を作成するにはどうすればよいですか?n-gramをベイジアンフィルターと組み合わせますか?
- トピックスポッティングを行うにはどうすればよいですか?例:バスケットボールや犬に関するテキストですか?私のアプローチ(「犬」と「バスケットボール」に関するウィキペディアの記事で次のことを行います):両方のドキュメントのn-gramベクトルを作成し、それらを正規化し、マンハッタン/ユークリッド距離を計算します。結果が1に近いほど、結果は高くなります。類似性
私のアプリケーションアプローチ、特に最後のアプローチについてどう思いますか?
あなたが私を助けてくれることを願っています。前もって感謝します!