自然語言處理 第三期

2021-09-17 22:43:15 字數 3980 閱讀 6480

基本文字處理技能

1.1 分詞的概念(分詞的正向最大、逆向最大、雙向最大匹配法);

1.2 詞、字元頻率統計;(可以使用python中的collections.counter模組,也可以自己尋找其他好用的庫)

2.1 語言模型中unigram、bigram、trigram的概念;

2.2 unigram、bigram頻率統計;(可以使用python中的collections.counter模組,也可以自己尋找其他好用的庫)

文字矩陣化:要求採用詞袋模型且是詞級別的矩陣化

步驟有:

3.1 分詞(可採用結巴分詞來進行分詞操作,其他庫也可以);

3.2 去停用詞;構造詞表。

3.3 每篇文件的向量化。

中文分詞:漢語自然語言處理的第一部分是中文分詞。因為中文不像英文那樣,實行分詞連寫,即詞與詞之間用空格分隔。

在分析中文文字之前必須將乙個漢字序列切分成乙個乙個單獨的詞,這個過程稱為中文分詞。

中文分詞主要分為機械師分詞法(基於詞典),基於語法和規則分詞法,基於統計分詞法。

最大匹配法:最大匹配是指以詞典為依據,取詞典中最長單詞為第乙個次取字數量的掃瞄串,在詞典中進行掃瞄(為提公升掃瞄效率,還可以跟據字數多少設計多個字典,然後根據字數分別從不同字典中進行掃瞄)。例如:詞典中最長詞為「中華人民共和國」共7個漢字,則最大匹配起始字數為7個漢字。然後逐字遞減,在對應的詞典中進行查詢。

(1)正向最大匹配法:正向即從前往後取詞,從7->1,每次減乙個字,直到詞典命中或剩下1個單字。

(2)逆向最大匹配法:逆向即從後往前取詞,其他邏輯和正向相同。

(3)雙向最大匹配法:兩種演算法都切一遍,然後根據大顆粒度詞越多越好,非詞典詞和單字詞越少越好的原則,選取其中一種分詞結果輸出。

2. 詞、字元頻率統計:

import jieba

txt =

open

("紅樓夢.txt"

,"r"

, encoding=

"gb18030"

).read(

)import collections

txt1 = txt

txt1 = txt1.replace(

'\n',''

)# 刪掉換行符

txt1 = txt1.replace(

',','')

# 刪掉逗號

txt1 = txt1.replace(

'。','')

# 刪掉句號

mylist =

list

(txt1)

mycount = collections.counter(mylist)

for key, val in mycount.most_common(10)

:# 有序(返回前10個)

print

(key, val)

語言模型中unigram、bigram、trigram的概念:

unigram 一元分詞,把句子分成乙個乙個的漢字

bigram 二元分詞,把句子從頭到尾每兩個字組成乙個詞語

trigram 三元分詞,把句子從頭到尾每三個字組成乙個詞語.

unigram、bigram頻率統計:

#!/usr/bin/env python

class

ngram

(object):

def__init__

(self, n)

:# n is the order of n-gram language model

self.n = n

self.unigram =

self.bigram =

# scan a sentence, extract the ngram and update their

# frequence.

## @param sentence list

# @return none

defscan

(self, sentence)

:# file your code here

for line in sentence:

self.ngram(line.split())

#unigram

if self.n ==1:

try:

fip =

open

("data.uni"

,"w"

)except

:print

>> sys.stderr ,

"failed to open data.uni"

for i in self.unigram:

fip.write(

"%s %d\n"

%(i,self.unigram[i]))

if self.n ==2:

try:

fip =

open

("data.bi"

,"w"

)except

:print

>> sys.stderr ,

"failed to open data.bi"

for i in self.bigram:

fip.write(

"%s %d\n"

%(i,self.bigram[i]))

# caluclate the ngram of the words

## @param words list

# @return none

defngram

(self, words)

:# unigram

if self.n ==1:

for word in words:

if word not

in self.unigram:

self.unigram[word]=1

else

: self.unigram[word]

= self.unigram[word]+1

# bigram

if self.n ==2:

num =

0 stri =

''for i in words:

num = num +

1if num ==2:

stri = stri +

" " stri = stri + i

if num ==2:

if stri not

in self.bigram:

self.bigram[stri]=1

else

: self.bigram[stri]

= self.bigram[stri]+1

num =

0 stri =

''if __name__==

"__main__"

:import sys

try: fip =

open

(sys.ar**[1]

,"r"

)except

:print

>> sys.stderr,

"failed to open input file"

sentence =

for line in fip:

iflen

(line.strip())

!=0:)

) uni = ngram(1)

bi = ngram(2)

uni.scan(sentence)

bi.scan(sentence)

文字矩陣化:要求採用詞袋模型且是詞級別的矩陣化

步驟有:

1) 分詞(可採用結巴分詞來進行分詞操作,其他庫也可以);

2) 去停用詞;構造詞表。

3) 每篇文件的向量化。

複眼計畫第三期

新的動態影像讀取與分析技術與時空穿透掃瞄技術的結合,產生時空穿透動態影像視覺模式,可以觀察多時間線的 動態影像,並配合 分析系統,形成新的少數派報告的資料 以取代舊的資料 複眼計畫第二期中的空間穿透影象讀取技術只能夠產生資料,對 分析的準確性幫助不大,需要公升級 單兵複眼系統公升級為第三期,可以讓光...

CSDN 精品專欄 第三期

以往精品專欄推薦 csdn 精品專欄 第一期 csdn 精品專欄 第二期 專欄簡介 本專欄面向python零基礎讀者,從基本語法寫起,介紹了資料結構和演算法 資料庫優化 linux命令 高階程式設計技巧和web安全攻防 專案前導,講解兩大web框架 flask和django。後進入python爬蟲 ...

jquery特效收藏第三期

1.flash製作房地產樓盤展示效果圖 2.flash製作夜空老鷹飛翔動畫 3.flash製作三種彩色鴿子飛翔 4.jquery製作排版fliplightbox燈箱彈窗外掛程式 5.jquery製作akordeon可折疊手風琴外掛程式 6.jquery自適應網頁視窗背景全屏 7.jquery製作帶右...