Python NLTK提取有用的chunk

本文介绍了如何通过分词和正则表达式解析文本信息,提取特定类型的数据,包括使用NLTK库对句子进行分词、词性标注,并定义语法模式以识别所需信息。此外,文章还提供了一个方法来筛选非英语单词,确保提取过程更加精确。

文本的信息很多,我们需要如何提取有用的信息?

比如一句话:

 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")

这样的判读去删选。

希望对大家有帮助。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值