Python NLTK提取有用的chunk

來源:互聯網
上載者:User

文本的資訊很多,我們需要如何提取有用的資訊?

比如一句話:

 Json is a good boy

我們希望得到的資訊是json 和 a good boy

那麼首先我們需要對句子進行分詞和判斷單詞的屬性:

可以用下面的代碼:

def ie_preprocess(document):...    sentences = nltk.sent_tokenize(document) ...    sentences = [nltk.word_tokenize(sent) for sent in sentences] ...    sentences = [nltk.pos_tag(sent) for sent in sentences] 

然後需要我們規定需要提取的資訊的類型:

也就是文法上的格式:

grammar = "NP: {<DT>?<JJ>*<NN>}"

這裡DT是定語,JJ是形容詞,NN是名詞

cp = nltk.RegexpParser(grammar)

之後使用

result = cp.parse(sentence) 

對語句進行分析

會得到一個nltk.tree.Tree的結構的東西

然後我們通過:

for n in chunked:if isinstance(n, nltk.tree.Tree):if n.node=='NP':a = n

這樣的代碼拿到我們需要的片段

實際中,這個方法並不能去掉一些非英語的單詞

我們可以加入:

d = enchant.Dict("en_US")

這樣的判讀去刪選。

希望對大家有協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.