spacyudpipe与pytextrank一起从非英语文本中提取关键字

2024-05-23 15:45:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用pytextrank(https://github.com/DerwenAI/pytextrank/)和spacy和英语模型来提取关键词——它非常有效

现在我需要处理非英语文本,我找到了udpipe(https://github.com/TakeLab/spacy-udpipe),但它不能开箱即用。。。之后

nlp = spacy_udpipe.load("sk")
tr = pytextrank.TextRank()
nlp.add_pipe(tr.PipelineComponent, name="textrank", last=True)
doc = nlp(text)

我得到带有POS和DEP标记的令牌,但是doc._.phrases中没有任何内容(doc.noun_chunks也是空的),而nlp.pipe_names中只有['textrank']

我应该向spacy的管道添加什么才能使其正常工作?我想pytextrank需要名词块

任何提示或建议都会对我有所帮助-谢谢


Tags: https模型文本githubcomdocnlpspacy
2条回答

你介意在PyTextRank回购协议上开始讨论这个问题吗? https://github.com/DerwenAI/pytextrank/issues

此外,如果您能提供示例文本(使用要求的语言)

我们将尝试调试此集成

谢谢你指出

帕科

我找到了解决办法!我不确定nlp.Defaults.syntax_iterators = {"noun_chunks" : get_chunks}有多干净,但它是有效的(它基于syntax_iterators.py__init__.py中的spaCy/lang/en名词块是如何定义的)

import spacy_udpipe, spacy, pytextrank
from spacy.matcher import Matcher
from spacy.attrs import POS

def get_chunks(doc):
    np_label = doc.vocab.strings.add("NP")
    matcher = Matcher(nlp.vocab)
    pattern = [{POS: 'ADJ', "OP": "+"}, {POS: {"IN": ["NOUN", "PROPN"]}, "OP": "+"}]
    matcher.add("Adjective(s), (p)noun", None, pattern)
    matches = matcher(doc)

    for match_id, start, end in matches:
        yield start, end, np_label

spacy_udpipe.download("sk") # download model
nlp = spacy_udpipe.load("sk")
nlp.Defaults.syntax_iterators = {"noun_chunks" : get_chunks}  #noun_chunk replacement

tr = pytextrank.TextRank(logger=None)
nlp.add_pipe(tr.PipelineComponent, name="textrank", last=True)

text = "Wikipédia je webová encyklopédia s otvoreným obsahom, ktorú možno slobodne čítať aj upravovať. Je sponzorovaná neziskovou organizáciou Wikimedia Foundation. Má 285 nezávislých jazykových vydaní vrátane slovenského a najrozsiahlejšieho anglického. Popri článkoch encyklopedického typu obsahuje, najmä anglická encyklopédia, aj články podobajúce sa almanachu, atlasu či stránky aktuálnych udalostí. Wikipédia je jedným z najpopulárnejších zdrojov informácií na webe s približne 13 miliardami zobrazení mesačne. Jej rast je skoro exponenciálny. Wikipédii (takmer 2 milióny). Wikipédia bola spustená 15. januára 2001 ako doplnok k expertmi písanej Nupedii. So stále rastúcou popularitou sa Wikipédia stala podhubím pre sesterské projekty ako Wikislovník (Wiktionary), Wikiknihy (Wikibooks) a Wikisprávy (Wikinews). Jej články sú upravované dobrovoľníkmi vo wiki štýle, čo znamená, že články môže meniť v podstate hocikto. Wikipediáni presadzujú politiku „nestranný uhol pohľadu“. Podľa nej relevantné názory ľudí sú sumarizované bez ambície určiť objektívnu pravdu. Vzhľadom na to, že Wikipédia presadzuje otvorenú filozofiu, jej najväčším problémom je vandalizmus a nepresnosť. "
doc = nlp(text)

print("Noun chunks:")
for nc in doc.noun_chunks:
    print(nc)

print("\nKeywords:")
for phrase in doc._.phrases:
    print("{:.4f} {:5d}  {}".format(phrase.rank, phrase.count, phrase.text))
    print(phrase.chunks)  

相关问题 更多 >