五 N gram語言模型的資料處理

2021-08-28 04:32:29 字數 1776 閱讀 7850

一、步驟

資料集說明:一段英文

(1)分詞:把原始的英文分詞,只保留詞之間的順序不變,多個句子也是看出整體進行分詞。

(2)統計詞頻:按照n元進行詞頻統計,比如「i love nlp i enjoy it」當n=2時候,可以劃分為(【i love】,【love nlp】,【nlp i】…),分別統計【i love】,【love nlp】等出現的次數。(在樸素貝葉斯中只是統計乙個詞,這裡是統計n個前後關聯的詞)

(3)對統計好的詞進行大到小的排序,取m和詞作為特徵向量

其他步驟同文字分類步驟

二、**

# -*- coding:utf-8 -*-

import urllib2

import re

import string

import operator

defcleantext

(input):

input = re.sub('\n+', " ", input).lower() # 匹配換行,用空格替換換行符

input = re.sub('\[[0-9]*\]', "", input) # 剔除類似[1]這樣的引用標記

input = re.sub(' +', " ", input) # 把連續多個空格替換成乙個空格

input = bytes(input) # .encode('utf-8') # 把內容轉換成utf-8格式以消除轉義字元

# input = input.decode("ascii", "ignore")

return input

defcleaninput

(input):

input = cleantext(input)

cleaninput =

input = input.split(' ') # 以空格為分隔符,返回列表

for item in input:

item = item.strip(string.punctuation) # string.punctuation獲取所有標點符號

if len(item) > 1

or (item.lower() == 'a'

or item.lower() == 'i'):

return cleaninput

defgetngrams

(input, n):

#把一段英文處理成乙個個詞語,保留了分詞後每個詞在原短文中的順序

input = cleaninput(input)

output = {} # 構造字典

for i in range(len(input) - n + 1):

ngramtemp = " ".join(input[i:i + n])

if ngramtemp not

in output: # 詞頻統計

output[ngramtemp] = 0

output[ngramtemp] += 1

return output

# 獲取資料,content為一段英文

content = urllib2.urlopen(urllib2.request("")).read()

#2-grams

ngrams = getngrams(content, 2)

sortedngrams = sorted(ngrams.items(), key=operator.itemgetter(1), reverse=true) # =true 降序排列

print(sortedngrams)

自然語言處理(N gram語言模型)

n gram語言模型 問題描述 由於公司業務產品中,需要使用者自己填寫公司名稱,而這個公司名稱存在大量的亂填現象,因此需要對其做一些歸一化的問題。在這基礎上,能延伸出乙個 使用者填寫的公司名是否有效的模型出來。目標 問題提出來了,就是想找到一種辦法來 使用者填寫的公司名是否有效?問題分析 要想 使用...

自然語言處理 n gram模型深度理解

n gram模型是自然語言處理裡面的乙個傳統模型。我們來看看他是怎麼實現的吧!要了解n gram模型,我們先來看看什麼是語言模型!the students opened their 其中可以填寫books laptops exam minds 那麼語言模型就是用來 這個空當中應該填寫什麼單詞。語言模...

自然語言處理中的N Gram模型詳解

n gram 有時也稱為n元模型 是自然語言處理中乙個非常重要的概念,通常在nlp中,人們基於一定的語料庫,可以利用n gram來預計或者評估乙個句子是否合理。另外一方面,n gram的另外乙個作用是用來評估兩個字串之間的差異程度。這是模糊匹配中常用的一種手段。本文將從此開始,進而向讀者展示n gr...