我想用n-gram(最好用PHP)實現一些應用程序。N-grams:解釋+ 2應用程序
哪種類型的n-gram更適合大多數用途?一個單詞級別還是一個字符級別的n-gram?你怎麼能在PHP中實現一個n-gram-tokenizer?
首先,我想知道N-gram究竟是什麼。它是否正確?這就是我對n-gram的理解:
句子:「我住在紐約。」
字級的雙字母組(2 N):「#我」, 「我住」, 「住」, 「在紐約」, '紐約#'
人物等級的雙字母組(2 N): 「#I」,「I#」,「#1」,「li」,「iv」,「ve」,「e#」,「#i」,「in」,「n#」,「#N」, 「NY」,「Y#」
當你有這樣的陣列的n元的零件,你放棄了重複者,並添加計數器爲每個零件提供頻率:
字級別二元語法:1 ,1,1,1,1]
character level bigrams:[2,1,1,...]
這是正確的嗎?
此外,我想更多地瞭解你可以用正克做什麼:
- 我如何識別使用正克文的語言?
- 即使沒有雙語語料庫,是否可以使用n-gram進行機器翻譯?
- 如何構建垃圾郵件過濾器(垃圾郵件,火腿)?將n元組和貝葉斯過濾器結合起來?
- 我該如何做主題發現?例如:是關於籃球還是狗的文字?我的方法(用維基百科對「狗」和「籃球」的文章進行以下操作):爲兩個文檔構建n-gram矢量,對它們進行歸一化,計算曼哈頓/歐幾里德距離,結果越接近1,相似性
您如何看待我的應用程序方法,特別是最後一個?
我希望你能幫助我。提前致謝!
有一個PHP庫可以幫助您:https://packagist.org/packages/drupol/phpngrams – 2018-02-05 20:54:07