Extracting Information from Text With NLTK

因为现实中的数据多为‘非结构化数据’,比如一般的txt文档,或是‘半结构化数据’,比如html,对于这样的数据需要采用一些技术才能从中提取出有用的信息。如果所有数据都是‘结构化数据’,比如Xml或关系数据库,那么就不需要特别去提取了,可以根据元数据去任意取到你想要的信息。

那么就来讨论一下用NLTK来实现文本信息提取的方法,

first, the raw text of the document is split into sentences using a sentence segmenter, and each sentence is further subdivided into words using a tokenizer . Next, each sentence is tagged with part-of-speech tags , which will prove very helpful in the next step,named entity recognition . In this step, we search for mentions of potentially interesting entities in each sentence. Finally, we use relation recognition to search for likely relations between different entities in the text.

可见这儿描述的信息提取的过程,包含4步,分词,词性标注,命名实体识别,实体关系识别,对于分词和词性标注前面已经介绍过了,那么就详细来看看named entity recognition 怎么来实现的。

 

Chunking

The basic technique we will use for entity recognition is chunking, which segments and labels multitoken sequences。

实体识别最基本的技术就是chunking,即分块,可以理解为把多个token组成词组。

Noun Phrase Chunking

我们就先以名词词组从chunking为例,即NP-chunking

One of the most useful sources of information for NP-chunking is part-of-speech tags.

>>> sentence = [("the", "DT"), ("little", "JJ"), ("yellow", "JJ"), ("dog", "NN"), ("barked", "VBD"), ("at", "IN"), ("the", "DT"), ("cat", "NN")]
>>> grammar = "NP: {<DT>?<JJ>*<NN>}" #Tag Patterns,定语(0或1个)形容词(任意个)名词(1个)
>>> cp = nltk.RegexpParser(grammar)
>>> result = cp.parse(sentence)
>>> print result
(S
(NP the/DT little/JJ yellow/JJ dog/NN) #NP-chunking, the little yellow dog
barked/VBD
at/IN
(NP the/DT cat/NN)) #NP-chunking, # NP-chunking, the cat
上面的这个方法就是用Regular Expressions来表示tag pattern,从而找到NP-chunking

再给个例子,tag patterns可以加上多条,可以变的更复杂

grammar = r"""NP: {<DT|PP/$>?<JJ>*<NN>} # chunk determiner/possessive, adjectives and nouns
                               {<NNP>+} # chunk sequences of proper nouns
                   """
cp = nltk.RegexpParser(grammar)
sentence = [("Rapunzel", "NNP"), ("let", "VBD"), ("down", "RP"), ("her", "PP$"), ("long", "JJ"), ("golden", "JJ"), ("hair", "NN")]
>>> print cp.parse(sentence)
(S
(NP Rapunzel/NNP) #NP-chunking, Rapunzel
let/VBD
down/RP
(NP her/PP$ long/JJ golden/JJ hair/NN)) #NP-chunking, her long golden hair

 

下面给个例子看看怎么从语料库中找到匹配的词性组合,

>>> cp = nltk.RegexpParser('CHUNK: {<V.*> <TO> <V.*>}') #找‘动词 to 动词’的组合
>>> brown = nltk.corpus.brown
>>> for sent in brown.tagged_sents():
...         tree = cp.parse(sent)
...         for subtree in tree.subtrees():
...             if subtree.node == 'CHUNK': print subtree
...
(CHUNK combined/VBN to/TO achieve/VB)
(CHUNK continue/VB to/TO place/VB)
(CHUNK serve/VB to/TO protect/VB)
(CHUNK wanted/VBD to/TO wait/VB)
(CHUNK allowed/VBN to/TO place/VB)
(CHUNK expected/VBN to/TO become/VB)

 

 

从扩散模型中提取训练数据是指从已有的扩散模型中提取出用于训练机器学习模型的数据集的过程。 扩散模型是一种模拟现实中扩散现象的数学模型,例如在金融学中用于模拟股票价格的变动,或者在生物学中用于模拟物质在细胞中的扩散。 在提取训练数据的过程中,首先要确定所需的特征和目标变量。特征是用于描述扩散模型状态的变量,可以是时间、位置、扩散系数等。目标变量则是我们希望预测或分析的变量,例如股票价格的变化趋势或物质的浓度分布。 接下来,我们需要从扩散模型中获取实际观测或模拟得到的数据。这些数据可以包括已知的扩散模型状态和对应的目标变量,或者通过模型模拟生成的数据。在金融领域,可以使用已有的交易数据作为输入,例如历史股价、交易量等。在生物学领域,则可以使用实验测得的物质浓度数据。 在数据获取之后,我们可以对数据进行预处理,例如处理缺失值、去除异常值等。然后,根据所选的机器学习算法,可以将数据集分为训练集和测试集。训练集用于训练模型,而测试集用于评估模型的性能。 最后,我们可以利用提取的训练数据来训练机器学习模型,例如使用监督学习算法来进行回归或分类任务。通过训练模型,我们可以学习到扩散模型中隐藏的模式和规律,从而可以对未知数据进行预测或分析。 总之,从扩散模型中提取训练数据是一种得到可以用于机器学习的数据集的过程,可以帮助我们理解和预测扩散现象。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值