一文看懂詞幹提取Stemming和詞形還原Lemmatisation(概念、異同、算法)

本文首發自 easyAI - 產品經理的 AI 知識庫算法

原文地址:《一文看懂詞幹提取Stemming和詞形還原Lemmatisation(概念、異同、算法)數據庫

一文看懂詞幹提取、詞形還原

詞幹提取和詞形還原是英文語料預處理中的重要環節。雖然他們的目的一致,可是二者仍是存在一些差別。bash

本文將介紹他們的概念、異同、實現算法等。優化

詞幹提取和詞形還原在 NLP 中在什麼位置?

詞幹提取是英文語料預處理的一個步驟(中文並不須要),而語料預處理是 NLP 的第一步,下面這張圖將讓你們知道詞幹提取在這個知識結構中的位置。ui

詞幹提取和詞形還原在 NLP 中在什麼位置

什麼是詞幹提取和詞形還原?

詞幹提取 - Stemmingspa

詞幹提取是去除單詞的先後綴獲得詞根的過程。code

你們常見的先後詞綴有「名詞的複數」、「進行式」、「過去分詞」...cdn

詞幹提取

詞形還原 - Lemmatisationblog

詞形還原是基於詞典,將單詞的複雜形態轉變成最基礎的形態。開發

詞形還原不是簡單地將先後綴去掉,而是會根據詞典將單詞進行轉換。好比「drove」會轉換爲「drive」。

詞形還原

爲何要作詞幹提取和詞形還原?

好比當我搜索「play basketball」時,Bob is playing basketball 也符合個人要求,,可是 play 和 playing 對於計算機來講是 2 種徹底不一樣的東西,因此咱們須要將 playing 轉換成 play。

詞幹提取和詞形還原的目的就是將長相不一樣,可是含義相同的詞統一塊兒來,這樣方便後續的處理和分析。

詞幹提取和詞形還原的 4 個類似點

詞幹提取和詞形還原的 4 個類似點

  1. 目標一致。詞幹提取和詞形還原的目標均爲將詞的屈折形態或派生形態簡化或歸併爲詞幹(stem)或原形的基礎形式,都是一種對詞的不一樣形態的統一歸併的過程。
  2. 結果部分交叉。詞幹提取和詞形還原不是互斥關係,其結果是有部分交叉的。一部分詞利用這兩類方法都能達到相同的詞形轉換效果。如「dogs」的詞幹爲「dog」,其原形也爲「dog」。
  3. 主流實現方法相似。目前實現詞幹提取和詞形還原的主流實現方法均是利用語言中存在的規則或利用詞典映射提取詞幹或得到詞的原形。
  4. 應用領域類似。主要應用於信息檢索和文本、天然語言處理等方面,兩者均是這些應用的基本步驟。

詞幹提取和詞形還原的 5 個不一樣點

詞幹提取和詞形還原的 5 個不一樣點

  1. 在原理上,詞幹提取主要是採用「縮減」的方法,將詞轉換爲詞幹,如將「cats」處理爲「cat」,將「effective」處理爲「effect」。而詞形還原主要採用「轉變」的方法,將詞轉變爲其原形,如將「drove」處理爲「drive」,將「driving」處理爲「drive」。
  2. 在複雜性上,詞幹提取方法相對簡單,詞形還原則須要返回詞的原形,須要對詞形進行分析,不只要進行詞綴的轉化,還要進行詞性識別,區分相同詞形但原形不一樣的詞的差異。詞性標註的準確率也直接影響詞形還原的準確率,所以,詞形還原更爲複雜。
  3. 在實現方法上,雖然詞幹提取和詞形還原實現的主流方法相似,但兩者在具體實現上各有側重。詞幹提取的實現方法主要利用規則變化進行詞綴的去除和縮減,從而達到詞的簡化效果。詞形還原則相對較複雜,有複雜的形態變化,單純依據規則沒法很好地完成。其更依賴於詞典,進行詞形變化和原形的映射,生成詞典中的有效詞。
  4. 在結果上,詞幹提取和詞形還原也有部分區別。詞幹提取的結果可能並非完整的、具備意義的詞,而只是詞的一部分,如「revival」詞幹提取的結果爲「reviv」,「ailiner」詞幹提取的結果爲「airlin」。而經詞形還原處理後得到的結果是具備必定意義的、完整的詞,通常爲詞典中的有效詞。
  5. 在應用領域上,一樣各有側重。雖然兩者均被應用於信息檢索和文本處理中,但側重不一樣。詞幹提取更多被應用於信息檢索領域,如Solr、Lucene等,用於擴展檢索,粒度較粗。詞形還原更主要被應用於文本挖掘、天然語言處理,用於更細粒度、更爲準確的文本分析和表達

3 種主流的詞幹提取算法

3 種主流的詞幹提取算法

Porter

這種詞幹算法比較舊。它是從20世紀80年代開始的,其主要關注點是刪除單詞的共同結尾,以便將它們解析爲通用形式。它不是太複雜,它的開發中止了。

一般狀況下,它是一個很好的起始基本詞幹分析器,但並不建議將它用於複雜的應用。相反,它在研究中做爲一種很好的基本詞幹算法,能夠保證重複性。與其餘算法相比,它也是一種很是溫和的詞幹算法。

「推薦」Snowball

種算法也稱爲 Porter2 詞幹算法。它幾乎被廣泛認爲比 Porter 更好,甚至發明 Porter 的開發者也這麼認爲。Snowball 在 Porter 的基礎上加了不少優化。Snowball 與 Porter 相比差別約爲5%。

Lancaster

Lancaster 的算法比較激進,有時候會處理成一些比較奇怪的單詞。若是在 NLTK 中使用詞幹分析器,則能夠很是輕鬆地將本身的自定義規則添加到此算法中。

詞形還原的實踐方法

詞形還原是基於詞典的,每種語言都須要通過語義分析、詞性標註來創建完整的詞庫,目前英文詞庫是很完善的。

Python 中的 NLTK 庫包含英語單詞的詞彙數據庫。這些單詞基於它們的語義關係連接在一塊兒。連接取決於單詞的含義。特別是,咱們能夠利用 WordNet。

import nltk
from nltk.stem import WordNetLemmatizer 
lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize("blogs"))
#Returns blog
複製代碼

總結

詞幹提取和詞形還原都是將長相不一樣,可是含義相同的詞統一塊兒來,這樣方便後續的處理和分析。

他們是英文語料預處理中的一個環節。

詞幹提取和詞形還原的 4 個類似點:

  1. 目標一致
  2. 部分結果一致
  3. 主流實現方式相似
  4. 應用領域類似

詞幹提取和詞形還原的 5 個不一樣點:

  1. 原理上不一樣
  2. 詞形還原更加複雜
  3. 具體實現方式的側重點不一樣
  4. 呈現結果有區別
  5. 應用領域上,側重點不徹底一致

3 種詞幹提取的主流算法:

  1. Porter
  2. Snowball
  3. Lancaster

英文的詞形還原能夠直接使用 Python 中的 NLTK 庫,它包含英語單詞的詞彙數據庫。

相關文章
相關標籤/搜索