網(wǎng)上有很多關(guān)于pos機預(yù)處理什么意思,Python怎么做中文文本預(yù)處理的知識,也有很多人為大家解答關(guān)于pos機預(yù)處理什么意思的問題,今天pos機之家(www.tjfsxbj.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機預(yù)處理什么意思
一 得到原始文本內(nèi)容def FileRead(self,filePath):
f = open(filePath)
raw=f.read()
return raw
二 中文分詞
def NlpirTokener(self,raw):
result=\'\'
tokens = nlpir.Seg(raw)
for w in tokens:
# result+= w[0]+"/"+w[1] #加詞性標(biāo)注
result+= w[0] +\'/\'#加詞性標(biāo)注
return result
def JiebaTokener(self,raw):
result=\'\'
words = pseg.cut(raw) #進行分詞
result="" #記錄最終結(jié)果的變量
for w in words:
# result+= str(w.word)+"/"+str(w.flag) #加詞性標(biāo)注
result+= str(w.word)+"/" #加詞
return result
網(wǎng)上評測的結(jié)果來看
在Python下可以采用的較好的中文分詞工具是結(jié)巴中文分詞和中科院的分詞系統(tǒng)。
對于這兩個工具進行測試。
1 安裝結(jié)巴中文分詞工具
在32位,Windows7 ,Python2.7下安裝最新的結(jié)巴中文分詞工具。
具體步驟:
(1)下載鏈接https://github.com/fxsjy/jieba,內(nèi)含安裝說明
(2)下載后解壓縮到目錄下,如C:/ jieba-master
(3)進入目錄下,執(zhí)行指令python setup.py install,完成安裝
(4)進行測試,與Java下的NLPIR/ICTCLAS2013進行比較
#coding=utf-8
\'\'\'\'\'
Created on 2014-3-19
測試結(jié)巴中文分詞工具
@author: liTC
\'\'\'
import jieba
import jieba.posseg as pseg
import time
t1=time.time()
#f=open("t_with_splitter.txt","r")#讀取文本
#string=f.read().decode("utf-8")
string=\'祖籍浙江省溫州市,1975年2月28日出生于浙江溫州,歌手。1987年考上浙江溫州清縣小百花越劇團,在團里唱小生。\'
words = pseg.cut(string)#進行分詞
result="" #記錄最終結(jié)果的變量
for w in words:
result+= str(w.word)+"/"+str(w.flag) #加詞性標(biāo)注
print result
f=open("t_with_POS_tag.txt","w") #將結(jié)果保存到另一個文檔中
f.write(result)
f.close()
t2=time.time()
print("分詞及詞性標(biāo)注完成,耗時:"+str(t2-t1)+"秒。") #反饋結(jié)果
測試一:
測試的語句是:“祖籍浙江省溫州市,1975年2月28日出生于浙江溫州,歌手。1987年考上浙江溫州清縣小百花越劇團,在團里唱小生?!?/p>
NLPIR/ICTCLAS2013的結(jié)果是:
祖籍/n 浙江省/ns 溫州市/ns ,/wd 1975年/t 2月/t 28日/t 出生/vi 于/p 浙江/ns 溫州/ns ,/wd 歌手/n 。/wj 1987年/t 考上/v 浙江/ns 溫州/ns 清/a 縣/n 小/a 百花/n 越劇團/n ,/wd 在/p 團里/n 唱/v 小生/n _
結(jié)巴中文分詞的結(jié)果是:
祖籍/n浙江省/ns溫州市/ns,/x1975/m年/m2/m月/m28/m日出/v生于/v浙江/ns溫州/ns,/x歌手/n。/x1987/m年/m考上/v浙江/ns溫州/ns清縣/ns小/n百花/n越劇團/nt,/x在/p團里/n唱/v小生/n(分詞及詞性標(biāo)注完成,耗時:1.96300005913秒)
測試二:
測試的語句是:工信處女干事每月經(jīng)過下屬科室都要親口交代24口交換機等技術(shù)性器件的安裝工作
NLPIR/ICTCLAS2013的結(jié)果是:
工/n 信/n 處女/n 干事/n 每月/r 經(jīng)過/p 下屬/v 科室/n 都/d 要/v 親口/d 交代/v 24/m 口/q 交換機/n 等/udeng 技術(shù)性/n 器件/n 的/ude1 安裝/vn 工作/vn _
結(jié)巴中文分詞的結(jié)果是:
工信處/n女干事/n每月/r經(jīng)過/p下屬/v科室/n都/d要/v親口/n交代/n24/m口/n交換機/n等/u技術(shù)性/n器件/n的/uj安裝/v工作/vn(分詞及詞性標(biāo)注完成,耗時:1.93799996376秒。)
從以上的兩個句子的分詞來看結(jié)巴中文分詞的結(jié)果都略好于NLPIR/ICTCLAS2013的結(jié)果,但是不能排除這兩個是特例的可能性。而且可以看出結(jié)巴中文分詞似乎是采取長詞優(yōu)先的方法所以會在長詞錯分成短詞的情況下性能要好,但是也無法評價如果是其他的實驗條件下這是否是個好的處理方式。
2 安裝Python下的NLPIR/ICTCLAS2014
在32位,Windows7 ,Python2.7下安裝最新的NLPIR/ICTCLAS2014。
具體步驟:
(1)下載鏈接http://ictclas.nlpir.org/downloads
(2)參照安裝流程http://1988eiying.blog.163.com/blog/static/7232177620141233525469/,解壓之后目錄如下:
(3)將【Data】整個文件夾拷貝到【sample】--【pythonsample】下
(4)將【lib】文件夾里的各個型號的dll 拷貝到【pythonsample】 --【nlpir】里,替換原來的舊的dll,文件名字要對應(yīng)更改,如拷過來的是win32下的NLPIR.dll,要對應(yīng)的改成NLPIR32.dll 放到【pythonsample】 --【nlpir】里
(5)打開【pythonsample】里的nlpir.py ,將libFile = \'./nlpir/NLPIR64.dll\' 這一句 里的dll改成對應(yīng)自己系統(tǒng)版本的dll,例如是32位的,就改成libFile= \'./nlpir/NLPIR32.dll\'
(6)將Data,nlpir,__init__.py,nlpir.py拷貝到項目代碼下,運行nlpir.py測試是否可以分詞
(7)在ICTCLAS2014Test.py中import nlpir用于實測,與結(jié)巴中文分詞進行比較
#coding=utf-8
\'\'\'\'\'
Created on 2014-3-19
測試NLPIR/ICTCLAS2014分詞工具
@author: liTC
\'\'\'
import nlpir
import time
t1=time.time()
#f=open("t_with_splitter.txt","r")#讀取文本
#string=f.read().decode("utf-8")
string=\'工信處女干事每月經(jīng)過下屬科室都要親口交代24口交換機等技術(shù)性器件的安裝工作\'
words =nlpir.Seg(string) #進行分詞
result="" #記錄最終結(jié)果的變量
for w in words:
result+= w[0]+"/"+w[1]#加詞性標(biāo)注
print result
f=open("t_with_POS_tag.txt","w") #將結(jié)果保存到另一個文檔中
f.write(result)
f.close()
t2=time.time()
print("分詞及詞性標(biāo)注完成,耗時:"+str(t2-t1)+"秒。") #反饋結(jié)果
測試一:
測試的語句是:“祖籍浙江省溫州市,1975年2月28日出生于浙江溫州,歌手。1987年考上浙江溫州清縣小百花越劇團,在團里唱小生?!?/p>
NLPIR/ICTCLAS2014的結(jié)果是:
祖籍/n浙江省/ns溫州市/ns,/wd1975年/t2月/t28日/t出生/vi于/p浙江/ns溫州/ns,/wd歌手/n。/wj1987年/t考上/v浙江/ns溫州/ns清/a縣/n小/a百花/n越劇團/n,/wd在/p團里/n唱/v小生/n。/wj(分詞及詞性標(biāo)注完成,耗時:0.00100016593933秒)
測試二:
測試的語句是:工信處女干事每月經(jīng)過下屬科室都要親口交代24口交換機等技術(shù)性器件的安裝工作
NLPIR/ICTCLAS2014的結(jié)果是:
工/n信/n處女/n干事/n每月/r經(jīng)過/p下屬/v科室/n都/d要/v親口/d交代/v24/m口/q交換機/n等/udeng技術(shù)性/n器件/n的/ude1安裝/vn工作/vn(分詞及詞性標(biāo)注完成,耗時:0.00200009346008秒。)
從以上的兩個句子的分詞來看NLPIR/ICTCLAS2014相對于NLPIR/ICTCLAS2013結(jié)果幾乎沒有變化,結(jié)巴中文分詞的結(jié)果都略好于NLPIR/ICTCLAS2014的結(jié)果,但是NLPIR/ICTCLAS2014要比結(jié)巴中文分詞至少快1000倍,如果用于科研結(jié)巴中文分詞或許可以獲得容忍,但是要是用于產(chǎn)品,絕對是選NLPIR/ICTCLAS2014。
三 去停用詞
def StopwordsRm(self,words):
result=\'\'
print words
wordList=[word for word in words.split(\'#\')]
print wordList[:20]
stopwords = {}.fromkeys([ line.rstrip()for line in open(conf.PreConfig.CHSTOPWORDS)])
cleanTokens= [w for w in wordList ifw not in stopwords]
print cleanTokens[:20]
for c in cleanTokens:
result+=c+"#"
print result
returnresult
在這個地方我遇到了一個很煩人的問題,那就是Python的中文解碼問題,在最開始的一個小時里我在在去停用詞之后一直看到的結(jié)果是這樣的:
\\xe3\\x80\\x90/\\xe6\\x97\\xa5\\xe6\\x9c\\x9f/\\xe3\\這種東西沒說的肯定是解碼造成的,于是開始找解決的方法。
后來找到CSDN上http://blog.csdn.net/samxx8/article/details/6286407
感覺說的很詳細,于是便開始嘗試里面介紹的方法。
在經(jīng)過一些嘗試以后我發(fā)現(xiàn),雖然這并不影響最后的得到分詞和去除停用詞的結(jié)果,但是是沒有辦法解決在print wordList[:20]和print cleanTokens[:20]出現(xiàn)的亂碼讓我很不爽。所以我決定繼續(xù)嘗試一下。在網(wǎng)上查找一下這個問題,發(fā)現(xiàn)好像很多人都曾經(jīng)遇到過,并且給出來一些解決方案。從大家的博客內(nèi)容了可以總結(jié)出幾個問題,Python對中文支持不是很好,Python 2.x對中文的支持不好,windows默認字符集下Python2.x經(jīng)常會出現(xiàn)亂碼情況,windows下的eclipse里面寫的python 2.x程序?qū)χ形闹С趾懿缓?。后來我還是找到了解決方案,那就是:
defmdcode(self,str):
for c in (\'utf-8\', \'gbk\', \'gb2312\'):
try:
return str.decode(c).encode( \'utf-8\' )
except:
pass
return \'unknown\'
自動檢測轉(zhuǎn)化,基本上問題上解決了。
四 半角與全角轉(zhuǎn)換
參考的網(wǎng)上的方法( http://www.cnblogs.com/kaituorensheng/p/3554571.html)拿過來用的。
方法就是檢查字符是不是全角的,是全角的就做減法變成半角的。其實我不是很懂,為什么會有全角字符這么bug的東西,給處理帶來了很多麻煩。
def strQ2B(self,ustring):
"""把字符串全角轉(zhuǎn)半角"""
ustring=ustring.decode(\'utf-8\')
rstring = ""
for uchar in ustring:
inside_code=ord(uchar)
if inside_code==0x3000:
inside_code=0x0020
else:
inside_code-=0xfee0
if inside_code<0x0020 or inside_code>0x7e: #轉(zhuǎn)完之后不是半角字符則返回原來的字符
rstring+=uchar.encode(\'utf-8\')
else:
rstring+=(unichr(inside_code)).encode(\'utf-8\')
return rstring
END.
以上就是關(guān)于pos機預(yù)處理什么意思,Python怎么做中文文本預(yù)處理的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機預(yù)處理什么意思的知識,希望能夠幫助到大家!
