九、N-gram语言模型
生活随笔
收集整理的這篇文章主要介紹了
九、N-gram语言模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.語言模型
語言模型的作用是根據文本輸入 ,計算文本內容是句子的概率。
2 N-gram模型介紹
2.1 語言模型概念
- 如果我們有一個由m 個詞組成的序列(或者說一個句子),我們希望計算句子的概率。根據鏈式規則,可得
- 根據馬爾可夫假設可得:
2.2 N-gram模型簡介
- N-gram模型是一種語言模型(Language Model,LM),語言模型是一個基于概率的判別模型,它的輸入是一句話(單詞的順序序列),輸出是這句話的概率,即這些單詞的聯合概率(joint probability)。
2.3 N-gram模型定義
- 當n=1時,一個一元模型為:
- 當n=2時,一個二元模型為:
- 當n=3時,一個三元模型為 :
3 N-gram語言模型
3.1 N-gram計算條件概率
- 如何計算公式中每一項條件概率。
- 極大似然估計:頻數項
3.2 N-gram概率計算實例
- 以Bi-gram為例,假設由三句話組成的語料庫:
- 容易統計,“I”出現了3次,“I am”出現了2次,因此可以計算概率:
- 同理:還能計算出如下概率:
4 N-gram模型的實現
4.1 N-gram語言模型構建的具體過程
- 導入文本特征抽取模塊
- 加載語料庫
- 構建N-gram模型
- 文本轉換為向量表示
4.2 步驟
步驟1:導入文本特征抽取模塊
from sklearn.feature_extraction.text import CountVectorizer步驟2:加載語料庫
# 語料庫 text = ["orange banana apple grape","banana apple apple","grape",'orange apple']步驟3:N-gram模型構建
# ngram_range=(2, 2)表明適應2-gram;decode_error="ignore":忽略異常字符, ngram_vectorizer = CountVectorizer(ngram_range=(2, 2),decode_error="ignore" )步驟4:文本轉化為向量表示
# 將文本轉換為對應的向量(數字)表示 x1 = ngram_vectorizer.fit_transform(text) print(x1.toarray()) print(ngram_vectorizer.vocabulary_)4.5 運行結果
# print(x1.toarray())運行結果: [[0 1 1 0 1][1 0 1 0 0][0 0 0 0 0][0 0 0 1 0]] # print(ngram_vectorizer.vocabulary_)運行結果: {'orange banana': 4, 'banana apple': 2, 'apple grape': 1, 'apple apple': 0, 'orange apple': 3}總結
以上是生活随笔為你收集整理的九、N-gram语言模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 八、朴素贝叶斯中文分类实战
- 下一篇: 十、词向量基础