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