当前位置:首页 » 格式模板 » python摘要

python摘要

发布时间: 2021-03-13 21:40:07

❶ python有哪些提取文本摘要的库

TextTeaser好像很赞
可是试试 snownlp
google goose也可以

❷ python有哪些提取文本摘要的库

  1. google goose

  2. pythonSnowNLP

  3. pythonTextTeaser

  4. pythonsumy

❸ python有哪些提取文本摘要的库

1.google goose

>>>fromgooseimportGoose
>>>url='http://edition.cnn.com/2012/02/22/world/europe/uk-occupy-london/index.html?hpt=ieu_c2'
>>>g=Goose()
>>>article=g.extract(url=url)
>>>article.title
u''
>>>article.meta_description
".Paul'yinadecisionmadebyLondon'sCourtofAppeal."
>>>article.cleaned_text[:150]
(CNN)--.Paul'
>>>article.top_image.src
http://i2.cdn.turner.com/cnn/dam/assets/111017024308-occupy-london-st-paul-s-cathedral-story-top.jpg

2. pythonSnowNLP

fromsnownlpimportSnowNLP

s=SnowNLP(u'这个东西真心很赞')

s.words#[u'这个',u'东西',u'真心',
#u'很',u'赞']

s.tags#[(u'这个',u'r'),(u'东西',u'n'),
#(u'真心',u'd'),(u'很',u'd'),
#(u'赞',u'Vg')]

s.sentiments#0.9769663402895832positive的概率

s.pinyin#[u'zhe',u'ge',u'dong',u'xi',
#u'zhen',u'xin',u'hen',u'zan']

s=SnowNLP(u'「繁体字」「繁体中文」的叫法在台湾亦很常见。')

s.han#u'「繁体字」「繁体中文」的叫法
#在台湾亦很常见。'

text=u'''
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,
所以它与语言学的研究有着密切的联系,但又有重要的区别。
自然语言处理并不是一般地研究自然语言,
而在于研制能有效地实现自然语言通信的计算机系统,
特别是其中的软件系统。因而它是计算机科学的一部分。
'''

s=SnowNLP(text)

s.keywords(3)#[u'语言',u'自然',u'计算机']

s.summary(3)#[u'因而它是计算机科学的一部分',
#u'自然语言处理是一门融语言学、计算机科学、
#数学于一体的科学',
#u'自然语言处理是计算机科学领域与人工智能
#领域中的一个重要方向']
s.sentences

s=SnowNLP([[u'这篇',u'文章'],
[u'那篇',u'论文'],
[u'这个']])
s.tf
s.idf
s.sim([u'文章'])#[0.3756070762985226,0,0]

3. pythonTextTeaser

#!/usr/bin/python
#-*-coding:utf-8-*-

#articlesource:https://blogs.dropbox.com/developers/2015/03/limitations-of-the-get-method-in-http/
title=""
text=",.Inthehopesthatithelpsothers,.Inthispost,we’ourownAPI.Asarule,..Forexample,abrowserdoesn’,,thebrowserknowsit’’sanetworkerror.ForformsthatuseHTTPPOST,.HTTP-’tmodifyserverstate.,theapp’.Thelibrarydoesn’.’tmodifyserverstate,butunfortunatelythisisn’talwayspossible.GETrequestsdon’thavearequestbody,.WhiletheHTTPstandarddoesn’,.Thisisrarelyaproblem,/deltaAPIcall.Thoughitdoesn’tmodifyserverstate,.Theproblemisthat,inHTTP,estbody.Wecouldhavesomehowcontorted/,,likeperformance,simplicity,anddeveloperergonomics.Intheend,wedecidedthebenefitsofmaking/deltamoreHTTP-likeweren’.case,soit’snosurprisethatitdoesn’tfiteveryAPIperfectly.Maybeweshouldn’tletHTTP’.Forexample,independentofHTTP,.Then,’tmodifyserverstateanddon’thavelargeparameters,.Thisway,we’."
tt=TextTeaser()
sentences=tt.summarize(title,text)
forsentenceinsentences:
printsentence

4. pythonsumy

#-*-coding:utf8-*-

from__future__importabsolute_import
from__future__importdivision,print_function,unicode_literals

fromsumy.parsers.htmlimportHtmlParser
fromsumy.parsers.
fromsumy.nlp.tokenizersimportTokenizer
fromsumy.summarizers.
fromsumy.nlp.stemmersimportStemmer
fromsumy.utilsimportget_stop_words


LANGUAGE="czech"
SENTENCES_COUNT=10


if__name__=="__main__":
url="http://www.zsstritezuct.estranky.cz/clanky/predmety/cteni/jak-naucit-dite-spravne-cist.html"
parser=HtmlParser.from_url(url,Tokenizer(LANGUAGE))
#orforplaintextfiles
#parser=PlaintextParser.from_file("document.txt",Tokenizer(LANGUAGE))
stemmer=Stemmer(LANGUAGE)

summarizer=Summarizer(stemmer)
summarizer.stop_words=get_stop_words(LANGUAGE)

forsentenceinsummarizer(parser.document,SENTENCES_COUNT):
print(sentence)

❹ python中如何分析这是一本关于什么的文档

最基本的就是做分词后取最高频词。

作为优化,可以从词性角度排除一些高频词,如高频词“的”之类的。
如果还想进一步优化,就需要使用大数据了,建立一个词相关性评分表,对文档分词后的词频与这相应的相关度做加权,选取加权最高的一组词或几组词为文档的索引词表。
然后从文档中提取整句与提取的索引词表履盖度最高的若干句作为文档的摘要。
大部分的摘要算法就是按这个思路来完成的。

❺ python有哪些提取文本摘要的库

miso-belica/sumy,而且在介绍页面里面还有一些其他的系统
Document Summarization using TextRank : blog : Josh Bohde 介绍了用Python实现TextRank算法的步骤
TextTeaser好像很赞

❻ 百度AI新闻摘要python可以怎么写

完整代码


importnumpyasnp
importspacy
fromspacy.lang.en.stop_wordsimportSTOP_WORDS
nlp=spacy.load('en_core_web_sm')
classTextRank4Keyword():
"""Extractkeywordsfromtext"""
def__init__(self):
self.d=0.85#dampingcoefficient,usuallyis.85
self.min_diff=1e-5#convergencethreshold
self.steps=10#iterationsteps
self.node_weight=None#savekeywordsanditsweight
defset_stopwords(self,stopwords):
"""Setstopwords"""
forwordinSTOP_WORDS.union(set(stopwords)):
lexeme=nlp.vocab[word]
lexeme.is_stop=True
defsentence_segment(self,doc,candidate_pos,lower):
"""Storethosewordsonlyincadidate_pos"""
sentences=[]
forsentindoc.sents:
selected_words=[]
fortokeninsent:
#
iftoken.pos_incandidate_posandtoken.is_stopisFalse:
iflowerisTrue:
selected_words.append(token.text.lower())
else:
selected_words.append(token.text)
sentences.append(selected_words)
returnsentences
defget_vocab(self,sentences):
"""Getalltokens"""
vocab=OrderedDict()
i=0
forsentenceinsentences:
forwordinsentence:
ifwordnotinvocab:
vocab[word]=i
i+=1
returnvocab
defget_token_pairs(self,window_size,sentences):
"""Buildtoken_pairsfromwindowsinsentences"""
token_pairs=list()
forsentenceinsentences:
fori,wordinenumerate(sentence):
forjinrange(i+1,i+window_size):
ifj>=len(sentence):
break
pair=(word,sentence[j])
ifpairnotintoken_pairs:
token_pairs.append(pair)
returntoken_pairs
defsymmetrize(self,a):
returna+a.T-np.diag(a.diagonal())
defget_matrix(self,vocab,token_pairs):
"""Getnormalizedmatrix"""
#Buildmatrix
vocab_size=len(vocab)
g=np.zeros((vocab_size,vocab_size),dtype='float')
forword1,word2intoken_pairs:
i,j=vocab[word1],vocab[word2]
g[i][j]=1
#GetSymmericmatrix
g=self.symmetrize(g)
#Normalizematrixbycolumn
norm=np.sum(g,axis=0)
g_norm=np.divide(g,norm,where=norm!=0)#thisisignorethe0elementinnorm
returng_norm
defget_keywords(self,number=10):
"""Printtopnumberkeywords"""
node_weight=OrderedDict(sorted(self.node_weight.items(),key=lambdat:t[1],reverse=True))
fori,(key,value)inenumerate(node_weight.items()):
print(key+'-'+str(value))
ifi>number:
break
defanalyze(self,text,
candidate_pos=['NOUN','PROPN'],
window_size=4,lower=False,stopwords=list()):
"""Mainfunctiontoanalyzetext"""
#Setstopwords
self.set_stopwords(stopwords)
#ParetextbyspaCy
doc=nlp(text)
#Filtersentences
sentences=self.sentence_segment(doc,candidate_pos,lower)#listoflistofwords
#Buildvocabulary
vocab=self.get_vocab(sentences)
#Gettoken_pairsfromwindows
token_pairs=self.get_token_pairs(window_size,sentences)
#Getnormalizedmatrix
g=self.get_matrix(vocab,token_pairs)
#Initionlizationforweight(pagerankvalue)
pr=np.array([1]*len(vocab))
#Iteration
previous_pr=0
forepochinrange(self.steps):
pr=(1-self.d)+self.d*np.dot(g,pr)
ifabs(previous_pr-sum(pr))<self.min_diff:
break
else:
previous_pr=sum(pr)
#Getweightforeachnode
node_weight=dict()
forword,indexinvocab.items():
node_weight[word]=pr[index]
self.node_weight=node_weight

❼ python有哪些提取文本摘要的库

其实实现是个简单版本并不难,文本切成句子,以句子相似性作为相互链接的权值,构造一个矩阵。有了权值矩阵就可以利用pagerank来得到每个句子的最
终得分。计算好没个句子的出度入度,给个初始的得分,迭代更新至收敛,得分最高则作为摘要。计算句子相似性有很多办法,切词算集合距
离,sentence2vec
算欧式距离等等,切词集合距离的办法比较糙,效果一般,还是考虑了语意相似会好一些。这种办法一般在比较规矩的文档,如新闻,效果还可以。

❽ python有哪些提取文本摘要的库

因为你的html不是合法的xml格式,标签没有成对出现,只能用html解析器

1
2
3
4
5
6
7
8

from bs4 import BeautifulSoup

s = """
</span><span style= '<a href="https://www..com/s?wd=font-size&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">font-size</a>:12.0pt;color:#CC3399'>714659079qqcom 2014/09/10 10:14</span></p></div>
"""
soup = BeautifulSoup(s, "html.parser")
print soup
print soup.get_text()

如果你想用正则的话,只要把标签匹配掉就可以了

1
2
3
4
5
6
7
8

import re

s = """
</span><span style= '<a href="https://www..com/s?wd=font-size&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">font-size</a>:12.0pt;color:#CC3399'>714659079qqcom 2014/09/10 10:14</span></p></div>
"""
dr = re.compile(r'<[^>]+>', re.S)
dd = dr.sub('', s)
print dd

如果解决了您的问题请采纳!
如果未解决请继续追问

❾ 如何用Python玩转TF-IDF之寻找相似文章并生成摘要

应用1:关键词自动生成

核心思想是对于某个文档中的某个词,计算其在这个文档中的标准化TF值,然后计算这个词在整个语料库中的标准化IDF值。在这里,标准化是说对原始的计算公式进行了一些变换以取得更好的衡量效果,并避免某些极端情况的出现。这个词的TF-IDF值便等于TF*IDF。对于这个文档中的所有词计算它们的TF-IDF值,并按照由高到低的顺序进行排序,由此我们便可以提取我们想要的数量的关键词。

TF-IDF的优点是快捷迅速,结果相对来说比较符合实际情况。缺点是当一篇文档中的两个词的IDF值相同的时候,出现次数少的那个词有可能更为重要。再者,TF-IDF算法无法体现我词的位置信息,出现位置靠前的词与出现位置靠后的词,都被视为重要性相同,这是不正确的。存在的解决办法是对文章的第一段和每段的第一句话给予比较大的权重。

应用2:计算文本相似度

明白了对于每个词,如何计算它的TF-IDF值。那么计算文本相似度也轻而易举。我们已经计算了文章中每个词的TF-IDF值,那么我们便可以将文章表征为词的TF-IDF数值向量。要计算两个文本的相似度,只需要计算余弦即可,余弦值越大,两个文本便越相似。

应用3:自动摘要

2007年,美国学者的论文<A Survey on Automatic Text Summarization>总结了目前的自动摘要算法,其中很重要的一种就是词频统计。这种方法最早出自1958年IBM公司一位科学家的论文<The Automatic Creation of Literature Abstracts>。这位科学家认为,文章的信息都包含在句子中,有的句子包含的信息多,有的句子包含的信息少。自动摘要就是找出那些包含信息最多的句子。那么句子的信息量怎么衡量呢?论文中采用了关键词来衡量。如果包含的关键词越多,就说明这个句子越重要,这位科学家提出用Cluster的来表示关键词的聚集。所谓簇,就是包含多个关键词的句子片段。


以第一个图为例,其中的cluster一共有7个词,其中4个是关键词。因此它的重要性分值就等于(4*4)/7=2.3。然后,找出包含cluster重要性分值最高的句子(比如5句),把它们合在一起,就构成了这篇文章的自动摘要。具体实现可以参见<Mining the Social Web: Analyzing Data from Facebook, Twitter, LinkedIn, and Other Social Media Sites>(O'Reilly, 2011)一书的第8章,Python代码见github。这种算法后来被简化,不再区分cluster,只考虑句子包含的关键词。伪代码如下。

Summarizer(originalText,maxSummarySize):
//计算文本的词频,生成一个列表,比如[(10,'the'),(3,'language'),(8,'code')...]
wordFrequences=getWordCounts(originalText)
//过滤掉停用词,列表变成[(3,'language'),(8,'code')...]
contentWordFrequences=filtStopWords(wordFrequences)
//按照词频的大小进行排序,形成的列表为['code','language'...]
contentWordsSortbyFreq=sortByFreqThenDropFreq(contentWordFrequences)
//将文章分成句子
sentences=getSentences(originalText)
//选择关键词首先出现的句子
setSummarySentences={}
:
firstMatchingSentence=search(sentences,word)
setSummarySentences.add(firstMatchingSentence)
ifsetSummarySentences.size()=maxSummarySize:
break
//将选中的句子按照出现顺序,组成摘要
summary=""
foreachsentenceinsentences:
:
summary=summary+""+sentence
returnsummary


类似的算法已经被写成了工具,比如基于Java的Classifier4J库的SimpleSummariser模块、基于C语言的OTS库、以及基于classifier4J的C#实现和python实现。

❿ python有哪些提取文本摘要的库

可以和其他语言交互的,所以你只要随便找个库就行。
说一个我自己做的:其实实现是个简单版本并不难,文本切成句子,以句子相似性作为相互链接的权值,构造一个矩阵。有了权值矩阵就可以利用pagerank来得到每个句子的最终得分。计算好没个句子的出度入度,给个初始的得分,迭代更新至收敛,得分最高则作为摘要。
计算句子相似性有很多办法,切词算集合距离,sentence2vec 算欧式距离等等,切词集合距离的办法比较糙,效果一般,还是考虑了语意相似会好一些。这种办法一般在比较规矩的文档,如新闻,效果还可以。

热点内容
涂鸦论文 发布:2021-03-31 13:04:48 浏览:698
手机数据库应用 发布:2021-03-31 13:04:28 浏览:353
版面217 发布:2021-03-31 13:04:18 浏览:587
知网不查的资源 发布:2021-03-31 13:03:43 浏览:713
基金赎回参考 发布:2021-03-31 13:02:08 浏览:489
悬疑故事范文 发布:2021-03-31 13:02:07 浏览:87
做简单的自我介绍范文 发布:2021-03-31 13:01:48 浏览:537
战略地图参考 发布:2021-03-31 13:01:09 浏览:463
收支模板 发布:2021-03-31 13:00:43 浏览:17
电气学术会议 发布:2021-03-31 13:00:32 浏览:731