Pyhanlp自然語言處理中的新詞識別

adnb34g發表於2019-02-15


新詞發現

“新詞發現”模組基於資訊熵和互資訊兩種演算法,可以在無語料的情況下提取一段長文字中的詞語,並支援過濾掉系統中已存在的“舊詞”,得到新詞列表。

呼叫方法

靜態方法

一句話靜態呼叫介面已經封裝到 HanLP 中:

    /**

     * 提取詞語

     *

     * @param text 大文字

     * @param size 需要提取詞語的數量

     * @return 一個詞語列表

     */

    public static List<WordInfo> extractWords(String text, int size)

    /**

     * 提取詞語

     *

     * @param reader 從reader獲取文字

     * @param size   需要提取詞語的數量

     * @return 一個詞語列表

     */

    public static List<WordInfo> extractWords(BufferedReader reader, int size) throws IOException

    /**

     * 提取詞語(新詞發現)

     *

     * @param text         大文字

     * @param size         需要提取詞語的數量

     * @param newWordsOnly 是否只提取詞典中沒有的詞語

     * @return 一個詞語列表

     */

    public static List<WordInfo> extractWords(String text, int size, boolean newWordsOnly)

    /**

     * 提取詞語(新詞發現)

     *

     * @param reader       從reader獲取文字

     * @param size         需要提取詞語的數量

     * @param newWordsOnly 是否只提取詞典中沒有的詞語

     * @return 一個詞語列表

     */

    public static List<WordInfo> extractWords(BufferedReader reader, int size, boolean newWordsOnly) throws IOException

呼叫示例請參考 com.hankcs.demo.DemoNewWordDiscover 值得注意的是,在計算資源允許的情況下,文字越長,結果質量越高。對於一些零散的文章,應當合併為整個大檔案傳入該演算法。

高階引數

根據語料的長度或用詞的不同,預設的引數有可能不能得到最佳的結果。我們可以透過構造不同的 NewWordDiscover調整提取演算法。該建構函式如下:

/**

 * 構造一個新詞識別工具

 * @param max_word_len 詞語最長長度

 * @param min_freq 詞語最低頻率

 * @param min_entropy 詞語最低熵

 * @param min_aggregation 詞語最低互資訊

 * @param filter 是否過濾掉HanLP中的詞庫中已存在的詞語

 */

public NewWordDiscover(int max_word_len, float min_freq, float min_entropy, float min_aggregation, boolean filter)

其中

· max_word_len 控制識別結果中最長的詞語長度,預設值是 4 ;該值越大,運算量越大,結果中出現短語的數量也會越多。

· min_freq 控制結果中詞語的最低頻率,低於該頻率的將會被過濾掉,減少一些運算量。由於結果是按照頻率排序的,所以該引數其實意義不大。

· min_entropy 控制結果中詞語的最低資訊熵的值,一般取 0.5 左右。該值越大,越短的詞語就越容易被提取出來。

· min_aggregation 控制結果中詞語的最低互資訊值,一般取 50 200 .該值越大,越長的詞語就越容易被提取出來,有時候會出現一些短語。

· filter 設為 true 的時候將使用內部詞庫過濾掉 “舊詞”。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2636111/,如需轉載,請註明出處,否則將追究法律責任。

相關文章