用维基百科的数据改进自然语言处理任务(上)

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
简介: 用维基百科的数据改进自然语言处理任务

使用Wikipedia来改进NLP任务,如命名实体识别和主题建模

介绍

自然语言处理(NLP)正在兴起。计算语言学和人工智能正在加入它们的力量,促进突破性发现。虽然研究集中在显著提高NLP技术上,但企业正在把这项技术视为一项战略资产。这种由NLP引导的突破性创新的主要作用是大量可用的文本数据。谈到数字化时,尤其是对于企业来说,重要的是要记住文档是知识的主要来源。

但是,当训练自然语言处理任务时,最大的瓶颈之一就是训练的数据。当涉及诸如特定领域的实词应用程序时,我们面临着资源匮乏的数据问题。训练数据有两个主要问题:(i)难以获取大量数据,以及(ii)在注释可用数据以进行训练和测试时费时的过程。

面对这些问题已经引起了计算机科学的广泛关注。特别是,最新的计算进展提出了两种解决低资源数据问题的方法:

微调预先训练好的语言模型,如BERT或GPT-3;

利用高质量的开放数据存储库,如Wikipedia或ConceptNet。

现在,大多数可用的计算语言学开放库都提供了基于这两种方法之一来开发NLP工具的体系结构。现在,我们演示如何利用Wikipedia来提高两个NLP任务的性能:命名实体识别和主题建模。

640.png

从维基百科中提取信息

有几种工具可用于处理来自Wikipedia的信息。对于涉及文本数据自动处理的问题,我们使用了一个名为SpikeX的spaCy项目。

SpikeX是由一家意大利公司(Erre Quadro Srl)开发的,旨在帮助构建知识提取工具。SpikeX可以理解为一个可以进行spaCy pipeline操作的集合。

pipinstall--no-cache-Ugit+https://github.com/erre-quadro/spikex.git@developspikexdownload-wikigraphenwiki_corespacydownloaden_core_web_sm

SpikeX有两个好用的功能:

1、给定一个维基百科页面,它会提取出所有相应的类别。

fromwasabiimportmsgfromtimeimportprocess_timeastimepage="Natural_Language_Processing"print(f"Categories for `{page}`:")
t=time()
forcinwg.get_categories(page):
print("\t", c)
forccinwg.get_categories(c):
print("\t\t->", cc)
msg.good(f"Success in {time() - t:.2f}s")

结果如下:

Categoriesfor`Natural_Language_Processing`:
Category:Artificial_intelligence->Category:Emerging_technologies->Category:Cybernetics->Category:Subfields_of_computer_science->Category:Computational_neuroscience->Category:Futures_studies->Category:Cognitive_science->Category:Personhood->Category:Formal_sciencesCategory:Speech_recognition->Category:Artificial_intelligence_applications->Category:Computational_linguistics->Category:Human–computer_interaction->Category:Digital_signal_processing->Category:SpeechCategory:Natural_language_processing->Category:Artificial_intelligence_applications->Category:Computational_linguisticsCategory:Computational_linguistics->Category:Computational_social_science

2、给定一个句子,它会找到与维基百科页面标题匹配的文本块。

fromspacyimportloadasspacy_loadfromspikex.wikigraphimportloadaswg_loadfromspikex.pipesimportWikiPageX#loadaspacymodelandgetadocnlp=spacy_load('en_core_web_sm')
doc=nlp('Elon Musk runs Tesla Motors')
#loadaWikiGraphwg=wg_load('enwiki_core')
#getaWikiPageXandextractallpageswikipagex=WikiPageX(wg)
doc=wikipagex(doc)
#seeallpagesextractedfromthedocforspanindoc._.wiki_spans:
print(span)
print(span._.wiki_pages)
print('------')

结果如下:

ElonMusk('Elon_Musk', 'Elon_musk', 'Elon_Musk_(book)', 'Elon_Musk_(2015_book)', 'Elon_Musk_(2015)', 'Elon_Musk_(biography)', 'Elon_Musk_(2015_biography)', 'Elon_Musk_(Ashlee_Vance)')
------Elon('Elon_(Judges)', 'Elon_(name)', 'Elon_(Hebrew_Judge)', 'Elon_(Ilan)', 'Elon_(disambiguation)', 'Elon_(biblical_judge)', 'Elon_(chemical)', 'Elon')
------Musk('Musk', 'MuSK', 'Musk_(wine)', 'Musk_(song)', 'Musk_(Tash_Sultana_song)', 'Musk_(disambiguation)')
------runs('Runs_(baseball_statistics)', 'Runs', 'Runs_(cricket)', 'Runs_(music)', 'Runs_(baseball)', 'Runs_(Baseball)', 'Runs_(musical)')
------TeslaMotors('Tesla_motors', 'Tesla_Motors')
------Tesla('Tesla_(band)', 'Tesla_(unit)', 'Tesla_(Czechoslovak_company)', 'Tesla_(crater)', 'Tesla_(microarchitecture)', 'Tesla_(2020_film)', 'Tesla_(car)', 'Tesla_(GPU)', 'TESLA', 'Tesla_(physicist)', 'Tesla_(group)', 'Tesla_(opera)', 'Tesla_(Bleach)', 'Tesla_(company)', 'Tesla_(disambiguation)', 'Tesla_(2016_film)', 'TESLA_(Czechoslovak_company)', 'Tesla_(unit_of_measure)', 'Tesla_(vehicles)', 'Tesla_(vehicle)', 'Tesla_(film)', 'Tesla_(album)', 'Tesla_(Flux_Pavilion_album)', 'Tesla_(surname)', 'Tesla')
------Motors ('Motors')

如我们所见,在第一个示例中,SpikeX提取了Wikipedia页面“Natural_language_processing”所属的所有类别。例如,“Natural_language_processing”属于“人工智能”、“语音识别”和“计算语言学”的类别。可以通过更深层次的检查进一步探索Wiki类别的树形结构。

在第二个例子中,对于“Elon Musk runs Tesla Motors”这句话,SpikeX抽取了这句话中所有可能在维基百科上有页面的页面。

现在,我们将看到如何使用这两个处理特性来执行命名实体识别和主题建模。


目录
相关文章
|
19天前
|
数据采集 自然语言处理 机器人
如何使用生成器来提高自然语言处理任务的性能?
如何使用生成器来提高自然语言处理任务的性能?
|
26天前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
42 2
|
30天前
|
机器学习/深度学习 存储 自然语言处理
从理论到实践:如何使用长短期记忆网络(LSTM)改善自然语言处理任务
【10月更文挑战第7天】随着深度学习技术的发展,循环神经网络(RNNs)及其变体,特别是长短期记忆网络(LSTMs),已经成为处理序列数据的强大工具。在自然语言处理(NLP)领域,LSTM因其能够捕捉文本中的长期依赖关系而变得尤为重要。本文将介绍LSTM的基本原理,并通过具体的代码示例来展示如何在实际的NLP任务中应用LSTM。
61 4
|
1月前
|
自然语言处理
【NLP自然语言处理】文本特征处理与数据增强
【NLP自然语言处理】文本特征处理与数据增强
|
3月前
|
机器学习/深度学习 自然语言处理 数据处理
|
4月前
|
数据采集 自然语言处理 机器人
使用生成器来提高自然语言处理任务的性能
使用生成器来提高自然语言处理任务的性能
|
3月前
|
自然语言处理 计算机视觉 Python
VisProg解析:根据自然语言指令解决复杂视觉任务
VisProg是一个神经符号系统,能够根据自然语言指令生成并执行Python程序来解决复杂的视觉任务,提供可解释的解决方案。
44 0
|
3月前
|
机器学习/深度学习 自然语言处理 并行计算
|
3月前
|
机器学习/深度学习 自然语言处理
自然语言处理 Paddle NLP - 任务式对话系统-理论
自然语言处理 Paddle NLP - 任务式对话系统-理论
62 0
|
4月前
|
机器学习/深度学习 自然语言处理 监控
NLP技术有哪些主要任务?
【7月更文挑战第8天】NLP技术有哪些主要任务?
204 4

热门文章

最新文章

下一篇
无影云桌面