NLP入门(九)词义消岐(WSD)的简介与实现

您所在的位置:网站首页 丰富的词义是什么 NLP入门(九)词义消岐(WSD)的简介与实现

NLP入门(九)词义消岐(WSD)的简介与实现

2023-07-12 13:17| 来源: 网络整理| 查看: 265

词义消岐简介

词义消岐,英文名称为Word Sense Disambiguation,英语缩写为WSD,是自然语言处理(NLP)中一个非常有趣的基本任务。

那么,什么是词义消岐呢?通常,在我们的自然语言中,不管是英语,还是中文,都有多义词存在。这些多义词的存在,会让人对句子的意思产生混淆,但人通过学习又是可以正确地区分出来的。

以“小米”这个词为例,如果仅仅只是说“小米”这个词语,你并不知道它实际指的到底是小米科技公司还是谷物。但当我们把词语置于某个特定的语境中,我们能很好地区分出这个词语的意思。比如,

雷军是小米的创始人。

在这个句子中,我们知道这个“小米”指的是小米科技公司。比如

我今天早上喝了一碗小米粥。

在这个句子中,“小米”指的是谷物、农作物。

所谓词义消岐,指的是在特定的语境中,识别出某个歧义词的正确含义。

那么,词义消岐有什么作用呢?词义消岐可以很好地服务于语言翻译和智能问答领域,当然,还有许多应用有待开发~

词义消岐实现

在目前的词义消岐算法中,有不少原创算法,有些实现起来比较简单,有些想法较为复杂,但实现的效果普遍都不是很好。比较经典的词义消岐的算法为Lesk算法,该算法的想法很简单,通过对某个歧义词构建不同含义的语料及待判别句子中该词语与语料的重合程度来实现,具体的算法原理可参考网址:https://en.wikipedia.org/wiki/Lesk_algorithm .

在下面的部分中,笔者将会介绍自己想的一种实现词义消岐的算法,仅仅是一个想法,仅供参考。

我们以词语“火箭”为例,选取其中的两个义项(同一个词语的不同含义):NBA球队名 和 燃气推进装置 ,如下:

获取语料

首先,我们利用爬虫爬取这两个义项的百度百科网页,以句子为单位,只要句子中出现该词语,则把这句话加入到这个义项的预料中。爬虫的完整Python代码如下:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071import requestsfrom bs4 import BeautifulSoupfrom pyltp import SentenceSplitter

class WebScrape(object): def __init__(self, word, url): self.url = url self.word = word

# 爬取百度百科页面 def web_parse(self): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 \ (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'} req = requests.get(url=self.url, headers=headers)

# 解析网页,定位到main-content部分 if req.status_code == 200: soup = BeautifulSoup(req.text.encode(req.encoding), 'lxml') return soup return None

# 获取该词语的义项 def get_gloss(self): soup = self.web_parse() if soup: lis = soup.find('ul', class_="polysemantList-wrapper cmn-clearfix") if lis: for li in lis('li'): if '



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3