PHP: 英文單字正規化, 把 進行式, 過去式. 等 轉換回 原型

要把英文的變化型的字, 轉回原型, 找了一些資料, 發現大家都是用一樣的演算法, 會發生的錯誤都一樣... XD

ex: ate => at, play => plai .... 不知為何這個問題一直無解~

需求: 將英文單字的各種型態, 全部做正規化, 全部轉回原型的型態. 因為有技術上的困難, 先只做 動詞類 轉 原型動詞

實作:

找到這個站: The Porter Stemming Algorithm, 裡面有各種程式語言的版本(for 此正規化), 我需要的是 PHP 版, 原始碼如下:

使用方法很簡單:

<?php
require('porter_stemmer.php');
$word = 'talking';
$stem = PorterStemmer::Stem($word);
echo $stem; // talk
?>

所以最後的解法是, 如下步驟:

  1. 先用這個 英語不規則動詞表 做一次轉換(讓 ate => eat)
  2. 用 Porter  Stemmer 跑一次
  3. 再對其它有問題的字, 單獨另外處理.

實作完成的可於此處玩玩: 動詞原型轉換, 因為目前沒有特別好的解法, 如果有玩出某個字有問題, 還麻煩請告訴我一下, 讓我再做第 3 點的補強.. Orz..

相關網頁


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 Programming。將永久鏈結加入書籤。

PHP: 英文單字正規化, 把 進行式, 過去式. 等 轉換回 原型 有 8 則回應

  1. 猴寶貝 說道:

    抱歉ㄋㄟ 無意間 搜尋到這篇文章
    而我對於英文單字 的名詞動詞 型態還原 有需求
    不知道 有沒有程式碼 是可以將已標明好詞性的文章
    整篇或是整個資料夾文章讀取 然後幫忙將其中的 名詞 動詞 還原型態
    再重新變成新的檔案 而儲存呢
    真的很抱歉 我非常急 所以無論您只能做到哪個階段
    或是不懂我說的 都可以再問我 麻煩您了

  2. Tsung 說道:

    Mmm... 這得要另外作些研究才可以, 您的文章篇數有多少, 然後這種英文轉換會有誤判率, 得要花多少人工掃描等等.
    要看看您預算大概有多少囉. 🙂

  3. 猴寶貝 說道:

    冒昧問一下 所以若是請您告知相關的程式碼
    是需要付費的是嗎??
    因為我以為是您單純自己對這些有興趣而已
    所以看到您的部落格時 才會發問
    而我是學生 單純是學術上需求 所以沒有想到預算這個層面
    甚至您說的 掃描等 都是我自己得完成的
    因此 若是需要付費 也請您告知一下 相關費用
    我再評估一下 ~"~

  4. Tsung 說道:

    我知道的 和 寫的程式都在上面囉, 剩下的東西都是需要另外研究的.
    只要有興趣, 是可以一起研究, 但是, 我認為若是作業要找人幫忙寫, 我就會考慮要收費. (而且有標明這是急件).

  5. wack 說道:

    你好 我有參考你的建議實作出正規化還原的動作

    比較想請教一個問題是 如何讓程式判斷名詞

    我遭遇到的問題是 輸入body時 Porter Stemmer演算法會輸出bodi

    我有去你的網站嘗試過發現可以將body還原成body

    所以想詢問一下你的方式

  6. jack 說道:

    先用这个英语不规则动词表做一次转换(让ate => eat)
    用Porter Stemmer 跑一次

    这两步详细要怎么做呢?

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料