2021SC@SDUSC
系列文章目录
(七)PKE模型使用二
目录
前言
上一篇博客已经介绍了pke模型使用教程中的DF,本篇将继续讲解教程,为下篇博客的代码分析做好准备
一、输入格式
pke 目前支持以下输入格式:
1.原始文本(raw text):利用spacy进行文本预处理,即tokenization, sentence splitting和 POS-tagging
原始文本文件中的内容示例:
Efficient discovery of grid services is essential for the success of grid computing. [...]
要以原始文本格式阅读文档:
extractor = pke.unsupervised.TopicRank() extractor.load_document(input='/path/to/input.txt', language='en')
下面简单介绍spacy
安装:pip install spaCy
国内源安装:pip install spaCy -i https://pypi.tuna.tsinghua.edu.cn/simple
- spaCy是世界上最快的工业级自然语言处理工具。 支持多种自然语言处理基本功能。
- 官网地址:https://spacy.io/
- spaCy主要功能包括分词、词性标注、词干化、命名实体识别、名词短语提取等等。
import spacy
nlp = spacy.load('en')
doc = nlp(u'This is a sentence.')
(1)tokenize功能
for token in doc:
print(token)
This
is
a
sentence
.
(2)词干化(Lemmatize)
for token in doc:
print(token, token.lemma_, token.lemma)
This this 1995909169258310477
is be 10382539506755952630
a a 11901859001352538922
sentence sentence 18108853898452662235
. . 12646065887601541794
(3)词性标注(POS Tagging)
for token in doc:
print(token, token.pos_, token.pos)
This DET 89
is VERB 99
a DET 89
sentence NOUN 91
. PUNCT 96
(4)命名实体识别(NER)
for entity in doc.ents:
print(entity, entity.label_, entity.label)
(5)名词短语提取
for nounc in doc.noun_chunks:
print(nounc)
a sentence
2.输入文本(input text):与原始文本相同,文本预处理使用spaCy进行。
要阅读输入文本:
extractor = pke.unsupervised.TopicRank() text = u'Efficient discovery of grid services is essential for the [...]' extractor.load_document(input=text, language='en')
3.Stanford XML CoreNLP:使用注释器 tokenize、ssplit、pos 和lemma生成的输出文件。 文档逻辑结构信息可以通过将属性合并到CoreNLP XML格式的句子元素中来指定。
CoreNLP XML 的示例
<?xml version="1.0" encoding="UTF-8"?> <root> <document> <sentences> <sentence id="1" section="abstract" type="bodyText" confidence="0.925"> <tokens> <token id="1"> <word>Efficient</word> <lemma>efficient</lemma> <CharacterOffsetBegin>362</CharacterOffsetBegin> <CharacterOffsetEnd>371</CharacterOffsetEnd> <POS>JJ</POS> </token> <token id="2"> <word>discovery</word> <lemma>discovery</lemma> <CharacterOffsetBegin>372</CharacterOffsetBegin> <CharacterOffsetEnd>381</CharacterOffsetEnd> <POS>NN</POS> </token> [...]
在这里,文档逻辑结构信息通过使用部分,类型和置信度属性添加到CoreNLP XML输出中。我们使用Luong等人(2012)提出的分类类别。在 pke 中,文档逻辑结构信息由 WINGNUS 模型利用,并处理以下值:
section="title|abstract|introduction|related work|conclusions" type="sectionHeader|subsectionHeader|subsubsectionHeader|bodyText"
要阅读 CoreNLP XML 文档,
extractor = pke.unsupervised.TopicRank() extractor.load_document(input='/path/to/input.xml')
二、非英语语言
pke 使用spacy来预处理文本。因此,在 spacy 中支持的所有语言都可以在 pke 中处理,列表如下
下面给出了法语关键短语提取的示例:
import pke
text="""Chaque année, la France déforeste potentiellement 5,1 millions
d'hectares via ses importations. Ensemble, agissons !"""
# initialize a TopicRank extractor
extractor = pke.unsupervised.TopicRank()
# load the content of the document and perform French stemming
extractor.load_document(input=text,
language='fr',
normalization="stemming")
# keyphrase candidate selection, here sequences of nouns and adjectives
# defined by the Universal PoS tagset
extractor.candidate_selection(pos={"NOUN", "PROPN" "ADJ"})
# candidate weighting, here using a random walk algorithm
extractor.candidate_weighting()
# N-best selection, keyphrases contains the 10 highest scored candidates as
# (keyphrase, score) tuples
keyphrases = extractor.get_n_best(n=2)
>>> [('hectares', 0.25085794471351), ('importations', 0.22508473817875038)]
其中在候选加权步骤中,这里使用的是随机游走(random walk)算法,下面简单介绍一下
三、随机游走
定义:随机游走,概念接近于布朗运动,是布朗运动的理想数学状态。
核心概念:任何无规则行走者所带的守恒量都各自对应着一个扩散运输定律。
随机游走算法的基本思想是:
从一个或一系列顶点开始遍历一张图。在任意一个顶点,遍历者将以概率1-a游走到这个顶点的邻居顶点,以概率a随机跳跃到图中的任何一个顶点,称a为跳转发生概率,每次游走后得出一个概率分布,该概率分布刻画了图中每一个顶点被访问到的概率。用这个概率分布作为下一次游走的输入并反复迭代这一过程。当满足一定前提条件时,这个概率分布会趋于收敛。收敛后,即可以得到一个平稳的概率分布。
本质上 Random Walk 是一种随机化的方法,在实际上生活中,例如醉汉行走的轨迹、花粉的布朗运动、证券的涨跌等都与 Random Walk 有密不可分的关系。Random Walk已经被成功地应用到数学,物理,化学,经济等各种领域。当前研究者们已经开始将 Random Walk 应用到信息检索、图像分割等领域,并且取得了一定的成果,其中一个突出的例子就是 Brin 和 Page 利用基于 Random Walk 的 PageRank 技术创建了 Google 公司。
随机游走的形式有:
随机游走(random walk)矩阵可以看做是马尔科夫链的一种特例。
喝醉的酒鬼总能找到回家的路,喝醉的小鸟则可能永远也回不了家。
一维、二维随机游走过程中,只要时间足够长,我们最终总能回到出发点;
三维网格中随机游走,最终能回到出发点的概率只有大约 34%;
四维网格中随机游走,最终能回到出发点的概率是 19.3% ;
八维空间中,最终能回到出发点的概率只有 7.3% ;
定理是著名数学家波利亚(George Pólya)在 1921 年证明的。
随机游走是现实生活中常见的一种模型:
气体分子的运动、滴入水中的墨水 、气味的扩散、醉汉行走轨迹、花粉的布朗运动、证券的涨跌、抛硬币…
- 物理学化学:Random Walk是扩散过程的基础模型。
- 统计领域:马尔可夫链蒙特卡罗(MCMC),解决近似计算问题。MCMC是解决近似计算问题一种重要方法,它能以比确定性算法快指数级的速度提供解决问题的最好随机方法,目前已经被广泛地应用在统计领域。
- 信息检索:早期搜索引擎如Yahoo使用的是关键字匹配技术,性能容易受到关键词频率的欺骗,所以搜索效果不是很好。1998年Jon Kleinberg 提出了HITS算法,Sergey Brin 和 Larry Page 提出了 PageRank算法之后,搜索的正确率就得到了巨大的改观,这两种技术都是基于Random Walk。《通用化的PageRank公式推导》
- 经济学:证券的涨跌
参考文档:随机游走算法_满腹的小不甘-CSDN博客_随机游走算法原理
总结
通过本篇博客的学习,了解了使用pke模型的先备知识,从下篇起正式对pke模型方面的代码进行分析