词义消岐简介
词义消岐,英文名称为Word Sense Disambiguation,英语缩写为WSD,是自然语言处理(NLP)中一个非常有趣的基本任务。
那么,什么是词义消岐呢?通常,在我们的自然语言中,不管是英语,还是中文,都有多义词存在。这些多义词的存在,会让人对句子的意思产生混淆,但人通过学习又是可以正确地区分出来的。
以**“小米”**这个词为例,如果仅仅只是说“小米”这个词语,你并不知道它实际指的到底是小米科技公司还是谷物。但当我们把词语置于某个特定的语境中,我们能很好地区分出这个词语的意思。比如,
雷军是小米的创始人。
在这个句子中,我们知道这个“小米”指的是小米科技公司。比如
我今天早上喝了一碗小米粥。
在这个句子中,“小米”指的是谷物、农作物。
所谓词义消岐,指的是在特定的语境中,识别出某个歧义词的正确含义。
那么,词义消岐有什么作用呢?词义消岐可以很好地服务于语言翻译和智能问答领域,当然,还有许多应用有待开发~
词义消岐实现比较经典的词义消岐的算法为Lesk算法,该算法的想法很简单,通过对某个歧义词构建不同含义的语料及待判别句子中该词语与语料的重合程度来实现
我们以词语“火箭”为例,选取其中的两个义项(同一个词语的不同含义):NBA球队名 和 燃气推进装置 ,如下:
首先,我们利用爬虫爬取这两个义项的百度百科网页,以句子为单位,只要句子中出现该词语,则把这句话加入到这个义项的预料中。爬虫的完整Python代码如下:
import requests
from bs4 import BeautifulSoup
from 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 '
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?