python分詞代碼
1. 如何用python對文章中文分詞並統計詞頻
功能 [root@skatedb55 ~]# vi op_log_file.py #!/usr/bin/env python #-*- coding: utf-8 -*- #Author:Skate import os,time def op_log(log): f=file(log_file,'a') date=time.strftime('%Y-%m-%d %H:%M:%S') record = '%s %s\n' %(date,log) ...
2. 如何利用Python對中文進行分詞處理
python做中文分詞處理主要有以下幾種:結巴分詞、NLTK、THULAC
1、fxsjy/jieba
結巴的標語是:做最好的 Python 中文分片語件,或許從現在來看它沒做到最好,但是已經做到了使用的人最多。結巴分詞網上的學習資料和使用案例比較多,上手相對比較輕松,速度也比較快。
結巴的優點:
支持三種分詞模式
支持繁體分詞
支持自定義詞典
MIT 授權協議
2、THULAC:一個高效的中文詞法分析工具包
前兩天我在做有關於共享單車的用戶反饋分類,使用jieba分詞一直太過零散,分類分不好。後來江兄給我推薦了THULAC: 由清華大學自然語言處理與社會人文計算實驗室研製推出的一套中文詞法分析工具包 。THULAC的介面文檔很詳細,簡單易上手。
THULAC分詞的優點:
能力強。利用規模最大的人工分詞和詞性標注中文語料庫(約含5800萬字)訓練而成,模型標注能力強大。
准確率高。該工具包在標准數據集Chinese Treebank(CTB5)上分詞的F1值可達97.3%,詞性標注的F1值可達到92.9%
速度較快。同時進行分詞和詞性標注速度為300KB/s,每秒可處理約15萬字。只進行分詞速度達到1.3MB/s,速度比jieba慢
Python 解決中文編碼問題基本可以用以下邏輯:
utf8(輸入) ——> unicode(處理) ——> (輸出)utf8
Python 裡面處理的字元都是都是unicode 編碼,因此解決編碼問題的方法是把輸入的文本(無論是什麼編碼)解碼為(decode)unicode編碼,然後輸出時再編碼(encode)成所需編碼。
由於處理的一般為txt 文檔,所以最簡單的方法,是把txt 文檔另存為utf-8 編碼,然後使用Python 處理的時候解碼為unicode(sometexts.decode('utf8')),輸出結果回txt 的時候再編碼成utf8(直接用str() 函數就可以了)。
3. 在python 環境下,使用結巴分詞,自動導入文本,分詞,提取關鍵詞.腳本 大俠給個
#-*-coding:UTF-8-*-
importjieba
__author__='lpe234'
seg_list=jieba.cut("我來到北京天安門",cut_all=True)
print','.join(seg_list)
...
Loadingmodelfromcache/var/folders/sv//T/jieba.cache
我,來到,北京,天安,天安門
Loadingmodelcost0.433seconds.
.
Processfinishedwithexitcode0
4. 如何用PYTHON做分詞處理
可以利用python的jieba分詞,得到文本中出現次數較多的詞。
首先pip安裝一下jieba,這個可以分詞
然後用計數器Counter()統計一下得到的分詞中各詞的數量
最後most_common(5),是列印出排名前五位的詞(包括特殊符號)
#encoding:utf-8
importsys
reload(sys)
sys.setdefaultencoding('utf-8')
importjieba
fromcollectionsimportCounter
str1=open('tips.txt').read()
wordlist_after_jieba=jieba.cut(str1,cut_all=True)
list_wl=Counter(wordlist_after_jieba)
foriinlist_wl.most_common(5):
printi[0],i[1]
5. python 使用jieba分詞出錯
猜測你使用的 Python 版本為 Python2 但是使用 coding: utf-8 設置中文編碼只在 Python 3 有效
所以 設置默認編碼 應在代碼開始部分應該加上
importsys
reload(sys)
sys.setdefaultencoding('UTF-8')
6. python結巴分詞後字典排列元素(key/value對)代碼詳解
最復雜的就是這一行了:
(word for word in jieba.cut(line,HMM=True)if word not in stop and len(word.strip())>1)
jieba.cut(line)將一行字元串,分割成一個個單詞
word for word in jieba.cut(line,HMM=True)是一個Python的表理解,相當於for循環遍歷分割好的一個個單詞
if word not in stop and len(word.strip())>1這仍然是表理解的一部分,如果滿足條件,就把單詞加入到一個新的列表中,如果不滿足就丟棄,
word not in stop單詞不在停用詞當中
len(word.strip())>1單詞去掉首尾的空格、標點符號後的長度大於1
7. python3怎麼使用結巴分詞
下面這個程序是對一個文本文件里的內容進行分詞的程序:test.py
[python] view plain
#!/usr/bin/python
#-*-encoding:utf-8-*-
importjieba#導入jieba模塊
defsplitSentence(inputFile,outputFile):
fin=open(inputFile,'r')#以讀的方式打開文件
fout=open(outputFile,'w')#以寫得方式打開文件
foreachLineinfin:
line=eachLine.strip().decode('utf-8','ignore')#去除每行首尾可能出現的空格,並轉為Unicode進行處理
wordList=list(jieba.cut(line))#用結巴分詞,對每行內容進行分詞
outStr=''
forwordinwordList:
outStr+=word
outStr+='/'
fout.write(outStr.strip().encode('utf-8')+' ')#將分詞好的結果寫入到輸出文件
fin.close()
fout.close()
splitSentence('myInput.txt','myOutput.txt')
寫完程序之後,在Linux重點輸入:python test.py即可運行程序進行分詞。
輸入的文件內容如下所示:
注意:第11行的 jieba.cut()返回的結構是一個可迭代的generator,可以用list(jieba.cut(...))轉化為list
8. 怎麼是用python 語言 使用結巴分詞 呢
Python代碼
#encoding=utf-8
importjieba
seg_list=jieba.cut("我來到北京清華大學",cut_all=True)
print"FullMode:","/".join(seg_list)#全模式
seg_list=jieba.cut("我來到北京清華大學",cut_all=False)
print"DefaultMode:","/".join(seg_list)#默認模式
seg_list=jieba.cut("他來到了網易杭研大廈")
print",".join(seg_list)
輸出:
FullMode:我/來/來到/到/北/北京/京/清/清華/清華大學/華/華大/大/大學/學
DefaultMode:我/來到/北京/清華大學
他,來到,了,網易,杭研,大廈(此處,「杭研」並沒有在詞典中,但是也被Viterbi演算法識別出來了)
9. python打開txt文件 並且對這個txt文件中的內容進行ngram分詞 已有分詞代碼如下圖且運
fname='/d/filename.txt'
withopen(fname)asf:
s=f.read()
ng=NGram(s)
print(ng.table)