python如何提取文本信息?
1、信息提取
先用句子分段器將文檔的原始文本分成句子,再用記號賦值器將每個句子進(jìn)一步分成單詞。其次,給每一個句子做詞性標(biāo)記。以nltk中的默認(rèn)工具為例,將句子分段器、分詞器、詞性標(biāo)記器連接。
defie_preprocess(document):
#nltk默認(rèn)的句子分段器
sentences=nltk.sent_tokenize(document)
#nltk默認(rèn)分詞器
sentences=[nltk.word_tokenize(sent)forsentinsentences]
#nltk默認(rèn)詞性標(biāo)記
sentences=[nltk.pos_tag(sent)forsentinsentences]
2、詞塊劃分
詞塊劃分是實(shí)體識別的基礎(chǔ)技術(shù),對多個詞的順序進(jìn)行劃分和標(biāo)記。
如NounPhraseChunking(名詞短語詞塊劃分)
使用正則表達(dá)式來定義一個語法,來進(jìn)行名詞短語詞塊的劃分
3、開發(fā)和評估詞塊劃分器
分區(qū)器可以用evaluate()方法評價分區(qū)器的性能好壞。
以下是使用一元標(biāo)記來建立單詞塊分割器的學(xué)習(xí)。但是,不是確定每個單詞的正確單詞性標(biāo)記,而是根據(jù)每個單詞的單詞性標(biāo)記,確定正確的單詞塊標(biāo)記。
#使用一元標(biāo)注器建立一個詞塊劃分器。根據(jù)每個詞的詞性標(biāo)記,嘗試確定正確的詞塊標(biāo)記。
classUnigramChunker(nltk.ChunkParserI):
#constructor
def__init__(self,train_sents):
#將訓(xùn)練數(shù)據(jù)轉(zhuǎn)換成適合訓(xùn)練標(biāo)注器的形式。tree2conlltags()方法將每個詞塊樹映射到一個三元組(word,tag,chunk)的列表
train_data=[[(t,c)forw,t,cinnltk.chunk.tree2conlltags(sent)]
forsentintrain_sents]
#訓(xùn)練一元分塊器
#self.tagger=nltk.UnigramTagger(train_data)
#訓(xùn)練二元分塊器
self.tagger=nltk.BigramTagger(train_data)
#sentence為一個已標(biāo)注的句子
defparse(self,sentence):
#提取詞性標(biāo)記
pos_tags=[posfor(word,pos)insentence]
#使用標(biāo)注器為詞性標(biāo)記標(biāo)注IOB詞塊
tagged_pos_tags=self.tagger.tag(pos_tags)
#提取詞塊標(biāo)記
chunktags=[chunktagfor(pos,chunktag)intagged_pos_tags]
#將詞塊標(biāo)記與原句組合
conlltags=[(word,pos,chunktag)for((word,pos),chunktag)
inzip(sentence,chunktags)]
#轉(zhuǎn)換成詞塊樹
returnnltk.chunk.conlltags2tree(conlltags)
以上就是python提取文本信息的方法,希望能對大家有所幫助,更多Python學(xué)習(xí)教程請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。