python英文分詞
『壹』 英語python supports objects怎麼翻譯
python supports objects可以翻譯為「python支持對象。」
重點單詞:python:英[ˈpaɪθən]美[ˈpaɪθɑːn]
n. 蟒,蚺蛇;(計算機)巨蟒語言(一種高級通用編程語言)
詞形變換: 復數 pythons 。
相關短語:
python reticulatus網紋巨蛇 ; 蟒蛇皮 ; 網紋蟒蛇
Calabar Python橡皮蟒
Python anchietae安哥拉蟒
Reticulated python網紋蟒 ; 網紋蟒蛇
雙語例句:
!
一隻非洲岩蟒竟然成為了兩只非洲豹的玩具!
InaPythonprogram,youaccesseachclassas aPythonmole.
在python程序中,您將以python模塊的形式使用這些類
Whyis thepythonprotectedfrom gettingsometypeofheart disease?
為什麼巨蟒可以遠離一些種類的心臟病呢?
『貳』 Python中文分詞的原理你知道嗎
中文分詞,即 Chinese Word Segmentation,即將一個漢字序列進行切分,得到一個個單獨的詞。表面上看,分詞其實就是那麼回事,但分詞效果好不好對信息檢索、實驗結果還是有很大影響的,同時分詞的背後其實是涉及各種各樣的演算法的。
中文分詞與英文分詞有很大的不同,對英文而言,一個單詞就是一個詞,而漢語是以字為基本的書寫單位,詞語之間沒有明顯的區分標記,需要人為切分。根據其特點,可以把分詞演算法分為四大類:
基於規則的分詞方法
基於統計的分詞方法
基於語義的分詞方法
基於理解的分詞方法
下面我們對這幾種方法分別進行總結。
基於規則的分詞方法
這種方法又叫作機械分詞方法、基於字典的分詞方法,它是按照一定的策略將待分析的漢字串與一個「充分大的」機器詞典中的詞條進行匹配。若在詞典中找到某個字元串,則匹配成功。該方法有三個要素,即分詞詞典、文本掃描順序和匹配原則。文本的掃描順序有正向掃描、逆向掃描和雙向掃描。匹配原則主要有最大匹配、最小匹配、逐詞匹配和最佳匹配。
最大匹配法(MM)。基本思想是:假設自動分詞詞典中的最長詞條所含漢字的個數為 i,則取被處理材料當前字元串序列中的前 i 個字元作為匹配欄位,查找分詞詞典,若詞典中有這樣一個 i 字詞,則匹配成功,匹配欄位作為一個詞被切分出來;若詞典中找不到這樣的一個 i 字詞,則匹配失敗,匹配欄位去掉最後一個漢字,剩下的字元作為新的匹配欄位,再進行匹配,如此進行下去,直到匹配成功為止。統計結果表明,該方法的錯誤率 為 1/169。
逆向最大匹配法(RMM)。該方法的分詞過程與 MM 法相同,不同的是從句子(或文章)末尾開始處理,每次匹配不成功時去掉的是前面的一個漢字。統計結果表明,該方法的錯誤率為 1/245。
逐詞遍歷法。把詞典中的詞按照由長到短遞減的順序逐字搜索整個待處理的材料,一直到把全部的詞切分出來為止。不論分詞詞典多大,被處理的材料多麼小,都得把這個分詞詞典匹配一遍。
設立切分標志法。切分標志有自然和非自然之分。自然切分標志是指文章中出現的非文字元號,如標點符號等;非自然標志是利用詞綴和不構成詞的詞(包 括單音詞、復音節詞以及象聲詞等)。設立切分標志法首先收集眾多的切分標志,分詞時先找出切分標志,把句子切分為一些較短的欄位,再用 MM、RMM 或其它的方法進行細加工。這種方法並非真正意義上的分詞方法,只是自動分詞的一種前處理方式而已,它要額外消耗時間掃描切分標志,增加存儲空間存放那些非 自然切分標志。
最佳匹配法(OM)。此法分為正向的最佳匹配法和逆向的最佳匹配法,其出發點是:在詞典中按詞頻的大小順序排列詞條,以求縮短對分詞詞典的檢索時 間,達到最佳效果,從而降低分詞的時間復雜度,加快分詞速度。實質上,這種方法也不是一種純粹意義上的分詞方法,它只是一種對分詞詞典的組織方式。OM 法的分詞詞典每條詞的前面必須有指明長度的數據項,所以其空間復雜度有所增加,對提高分詞精度沒有影響,分詞處理的時間復雜度有所降低。
此種方法優點是簡單,易於實現。但缺點有很多:匹配速度慢;存在交集型和組合型歧義切分問題;詞本身沒有一個標準的定義,沒有統一標準的詞集;不同詞典產生的歧義也不同;缺乏自學習的智能性。
基於統計的分詞方法
該方法的主要思想:詞是穩定的組合,因此在上下文中,相鄰的字同時出現的次數越多,就越有可能構成一個詞。因此字與字相鄰出現的概率或頻率能較好地反映成詞的可信度。可以對訓練文本中相鄰出現的各個字的組合的頻度進行統計,計算它們之間的互現信息。互現信息體現了漢字之間結合關系的緊密程度。當緊密程 度高於某一個閾值時,便可以認為此字組可能構成了一個詞。該方法又稱為無字典分詞。
該方法所應用的主要的統計模型有:N 元文法模型(N-gram)、隱馬爾可夫模型(Hiden Markov Model,HMM)、最大熵模型(ME)、條件隨機場模型(Conditional Random Fields,CRF)等。
在實際應用中此類分詞演算法一般是將其與基於詞典的分詞方法結合起來,既發揮匹配分詞切分速度快、效率高的特點,又利用了無詞典分詞結合上下文識別生詞、自動消除歧義的優點。
基於語義的分詞方法
語義分詞法引入了語義分析,對自然語言自身的語言信息進行更多的處理,如擴充轉移網路法、知識分詞語義分析法、鄰接約束法、綜合匹配法、後綴分詞法、特徵詞庫法、矩陣約束法、語法分析法等。
擴充轉移網路法
該方法以有限狀態機概念為基礎。有限狀態機只能識別正則語言,對有限狀態機作的第一次擴充使其具有遞歸能力,形成遞歸轉移網路 (RTN)。在RTN 中,弧線上的標志不僅可以是終極符(語言中的單詞)或非終極符(詞類),還可以調用另外的子網路名字分非終極符(如字或字串的成詞條件)。這樣,計算機在 運行某個子網路時,就可以調用另外的子網路,還可以遞歸調用。詞法擴充轉移網路的使用, 使分詞處理和語言理解的句法處理階段交互成為可能,並且有效地解決了漢語分詞的歧義。
矩陣約束法
其基本思想是:先建立一個語法約束矩陣和一個語義約束矩陣, 其中元素分別表明具有某詞性的詞和具有另一詞性的詞相鄰是否符合語法規則, 屬於某語義類的詞和屬於另一詞義類的詞相鄰是否符合邏輯,機器在切分時以之約束分詞結果。
基於理解的分詞方法
基於理解的分詞方法是通過讓計算機模擬人對句子的理解,達到識別詞的效果。其基本思想就是在分詞的同時進行句法、語義分析,利用句法信息和語義信息來處理歧義現象。它通常包括三個部分:分詞子系統、句法語義子系統、總控部分。在總控部分的協調下,分詞子系統可以獲得有關詞、句子等的句法和語義信息來對分詞歧義進行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用大量的語言知識和信息。目前基於理解的分詞方法主要有專家系統分詞法和神經網路分詞法等。
專家系統分詞法
從專家系統角度把分詞的知識(包括常識性分詞知識與消除歧義切分的啟發性知識即歧義切分規則)從實現分詞過程的推理機中獨立出來,使知識庫的維護與推理機的實現互不幹擾,從而使知識庫易於維護和管理。它還具有發現交集歧義欄位和多義組合歧義欄位的能力和一定的自學習功能。
神經網路分詞法
該方法是模擬人腦並行,分布處理和建立數值計算模型工作的。它將分詞知識所分散隱式的方法存入神經網路內部,通過自學習和訓練修改內部權值,以達到正確的分詞結果,最後給出神經網路自動分詞結果,如使用 LSTM、GRU 等神經網路模型等。
神經網路專家系統集成式分詞法
該方法首先啟動神經網路進行分詞,當神經網路對新出現的詞不能給出准確切分時,激活專家系統進行分析判斷,依據知識庫進行推理,得出初步分析,並啟動學習機制對神經網路進行訓練。該方法可以較充分發揮神經網路與專家系統二者優勢,進一步提高分詞效率。
以上便是對分詞演算法的基本介紹。
『叄』 求問用python實現:編寫程序,計算用戶輸入的英文句子中的詞語數量,以及
這個你需要去網上找一個python版本的英文的分詞包,做句子的分詞,當然最簡單的你可以按空格對英文進行分詞。。用text.split(" ")來分。然後統計每個詞的長度並求平均值
cc = raw_input('input a string:')
sen_list = cc.split(" ")
count = len(sen_list)
sum = 0
for word in sen_list:
if word:
sum += len(word)
avg = sum*1.0/count
print avg
『肆』 求問用python實現:編寫程序,計算用戶輸入的英文句子中的詞語數量,以及詞
s=''
list_split=s.split('')
print(list_split)#['this','is','a','sentence','sentence','sentence']
print(len(list_split))
result={}
forwordinlist_split:
ifresult.get(word,None):
result[word]+=1
continue
result[word]=1
print(result)#{'is':1,'a':1,'this':1,'sentence':3}
『伍』 部分常用分詞工具使用整理
以下分詞工具均能在Python環境中直接調用(排名不分先後)。
1、jieba(結巴分詞) 免費使用
2、HanLP(漢語言處理包) 免費使用
3、SnowNLP(中文的類庫) 免費使用
4、FoolNLTK(中文處理工具包) 免費使用
5、Jiagu(甲骨NLP) 免費使用
6、pyltp(哈工大語言雲) 商用需要付費
7、THULAC(清華中文詞法分析工具包) 商用需要付費
8、NLPIR(漢語分詞系統) 付費使用
1、jieba(結巴分詞)
「結巴」中文分詞:做最好的 Python 中文分片語件。
項目Github地址:jieba
安裝 :
pip install jieba
使用 :
import jieba
jieba.initialize()
text = '化妝和服裝'
words = jieba.cut(text)
words = list(words)
print(words)
2、HanLP(漢語言處理包)
HanLP是一系列模型與演算法組成的NLP工具包,由大快搜索主導並完全開源,目標是普及自然語言處理在生產環境中的應用。HanLP具備功能完善、性能高效、架構清晰、語料時新、可自定義的特點。
項目Github地址:pyhanlp
安裝:
pip install pyhanlp
使用 :
import pyhanlp
text = '化妝和服裝'
words = []
for term in pyhanlp.HanLP.segment(text):
words.append(term.word)
print(words)
3、SnowNLP(中文的類庫)
SnowNLP是一個python寫的類庫,可以方便的處理中文文本內容,是受到了TextBlob的啟發而寫的,由於現在大部分的自然語言處理庫基本都是針對英文的,於是寫了一個方便處理中文的類庫,並且和TextBlob不同的是,這里沒有用NLTK,所有的演算法都是自己實現的,並且自帶了一些訓練好的字典。
項目Github地址:snownlp
安裝:
pip install snownlp
使用:
import snownlp
text = '化妝和服裝'
words = snownlp.SnowNLP(text).words
print(words)
4、FoolNLTK(中文處理工具包)
可能不是最快的開源中文分詞,但很可能是最準的開源中文分詞。
項目Github地址:FoolNLTK
安裝:
pip install foolnltk
使用:
import fool
text = '化妝和服裝'
words = fool.cut(text)
print(words)
5、Jiagu(甲骨NLP)
基於BiLSTM模型,使用大規模語料訓練而成。將提供中文分詞、詞性標注、命名實體識別、關鍵詞抽取、文本摘要、新詞發現等常用自然語言處理功能。參考了各大工具優缺點製作,將Jiagu回饋給大家。
項目Github地址:jiagu
安裝:
pip3 install jiagu
使用:
import jiagu
jiagu.init()
text = '化妝和服裝'
words = jiagu.seg(text)
print(words)
6、pyltp(哈工大語言雲)
pyltp 是 LTP 的 Python 封裝,提供了分詞,詞性標注,命名實體識別,依存句法分析,語義角色標注的功能。
項目Github地址:pyltp,3.4模型下載鏈接:網盤
安裝:
pip install pyltp
使用:
import pyltp
segmentor = pyltp.Segmentor()
segmentor.load('model/ltp_data_v3.4.0/cws.model') # 模型放置的路徑
text = '化妝和服裝'
words = segmentor.segment(text)
words = list(words)
print(words)
7、THULAC(清華中文詞法分析工具包)
THULAC(THU Lexical Analyzer for Chinese)由清華大學自然語言處理與 社會 人文計算實驗室研製推出的一套中文詞法分析工具包,具有中文分詞和詞性標注功能。
項目Github地址:THULAC-Python
安裝:
pip install thulac
使用:
import thulac
thu = thulac.thulac(seg_only=True)
text = '化妝和服裝'
words = thu.cut(text, text=True).split()
print(words)
NLPIR(漢語分詞系統)
主要功能包括中文分詞;英文分詞;詞性標注;命名實體識別;新詞識別;關鍵詞提取;支持用戶專業詞典與微博分析。NLPIR系統支持多種編碼、多種操作系統、多種開發語言與平台。
項目Github地址:pynlpir
安裝:
pip install pynlpir
下載證書覆蓋到安裝目錄,NLPIR.user 例如安裝目錄:/usr/lib64/python3.4/site-packages/pynlpir/Data
使用 :
import pynlpir
pynlpir.open()
text = '化妝和服裝'
words = pynlpir.segment(text, pos_tagging=False)
print(words)
pynlpir.close()
『陸』 python為什麼分詞後還是句子
分詞有很多情況,計算量也非常大,這時我們可以用下一節維特比演算法來優化演算法時間復雜度。Python是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。Python的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。
『柒』 用Python實現英文文章難度評級
By Jiaxian Shi
英文文章的難度從直覺上來講可以從以下兩方面來定義:
句子的難易程度可以從句子的長度和復雜性(從句數量,嵌套)方面來考慮。詞彙的難易程度可以從詞彙的長度和使用頻率(專業詞彙,罕見詞彙)方面來考慮。通過查閱維基網路等相關資料,發現目前普遍得到運用的可讀性標准為Flesch–Kincaid可讀性測試指標。Flesch–Kincaid可讀性測試指標由兩個指標構成:Flesch Reading Ease(FRE)和Flesch–Kincaid Grade Level(FKGL)。與我們的直覺一致,兩者都使用了類似的方法:句子長度和詞彙長度(由音節數確定,不單純考慮字母數)。由於兩個指標對句子長度和詞彙長度所採取的權重不同(包括正負號),所以兩個指標的意義相反:FRE數值越高,文章就越簡單,可讀性也越高。而FKGL數值越高,文章就越復雜,文章的可讀性也就越低。
使用Python強大的自然語言處理(NLP)包NLTK,來實現下述3個功能:
其中,斷句使用NLTK提供的非監督學習的預訓練模型tokenizers/punkt/english.pickle,分詞則使用NLTK推薦的word_tokenize函數(使用TreebankWordTokenizer和PunktSentenceTokenizer模塊),分音節則使用NLTK供的SyllableTokenizer模塊。需要注意的是,分詞會將標點符號分為一個單詞,需要手動去除。同時,分音節時會講英語中的連字元「-」分為一個音節,也需要手動去除。另外,文章需要進行預處理,去除回車符和空格,並將非標准標點符號轉換為英文標准標點符號。
統計出句數,詞數和音節數後,即可根據上文提供的公式計算出FRE和FKGL了。本程序使用4段不同類型的英文文章分別計算FRG和FKGL,並使用matplotlib模塊繪制出柱狀圖已做比較。
文章:
比較結果如下圖所示:
可以發現,文章的難度為:兒童文學<偵探小說<雜志文章<學術論文,這與我們的實際感受是一致的。
『捌』 如何用python和jieba分詞,統計詞頻
#!python3
#-*-coding:utf-8-*-
importos,codecs
importjieba
fromcollectionsimportCounter
defget_words(txt):
seg_list=jieba.cut(txt)
c=Counter()
forxinseg_list:
iflen(x)>1andx!=' ':
c[x]+=1
print('常用詞頻度統計結果')
for(k,v)inc.most_common(100):
print('%s%s%s%d'%(''*(5-len(k)),k,'*'*int(v/3),v))
if__name__=='__main__':
withcodecs.open('19d.txt','r','utf8')asf:
txt=f.read()
get_words(txt)