machine-learning - 用于理解上下文词的自然语言处理技术
问题描述
取下面的句子:
I'm going to change the light bulb
手段的change
意思replace
,如某人要更换灯泡。这可以通过使用字典 api 或类似的东西轻松解决。但是,下面的句子
I need to go the bank to change some currency
You need to change your screen brightness
第一句不再是意思replace
,它的意思Exchange
,第二句,change
意思是adjust
。
如果您试图理解change
在这种情况下的含义,有人会使用什么技术来根据句子的上下文提取正确的定义?我想做的是什么?
请记住,输入只会是一个句子。所以像:
Screen brightness is typically too bright on most peoples computers.
People need to change the brightness to have healthier eyes.
不是我要解决的问题,因为可以使用上一句来设置上下文。这也适用于许多不同的词,而不仅仅是 word change
。
欣赏建议。
编辑:我知道各种嵌入模型可以帮助深入了解这个问题。如果这是您的答案,您如何解释返回的词嵌入?这些数组的长度可以超过 500+,这在解释上是不切实际的。
解决方案
您要做的就是所谓的Word Sense Disambiguation。多年来,它一直是研究的主题,虽然可能不是最受欢迎的问题,但它仍然是一个积极研究的主题。即使是现在,仅仅选择一个词的最常见意义是一个强有力的基线。
词嵌入可能很有用,但它们的使用与您在这里尝试做的事情是正交的。
这是pywsd的一些示例代码,它是一个 Python 库,实现了一些经典技术:
>>> from pywsd.lesk import simple_lesk
>>> sent = 'I went to the bank to deposit my money'
>>> ambiguous = 'bank'
>>> answer = simple_lesk(sent, ambiguous, pos='n')
>>> print answer
Synset('depository_financial_institution.n.01')
>>> print answer.definition()
'a financial institution that accepts deposits and channels the money into lending activities'
这些方法大多有点陈旧,我不能说它们的质量,但至少这是一个很好的起点。
词义通常来自WordNet。
推荐阅读
- azure-cognitive-search - 升级 Azure 搜索服务的定价层,无需重新创建服务
- python - Aerospike python客户端:检查记录是否成功存储在集群上
- c# - 如何解析 API 所有格式的机读区护照、ID C# WinForm 应用程序
- java - 无法进入指定网址
- .net - 如何通过 https 将 nginx 配置为 dotnet 服务器的代理
- regex - 使用 PowerShell 中的正则表达式过滤提高处理速度
- javascript - 想要使用 javascript 从 css url 获取图像,以便我可以设置背景图像的样式
- python - numpy.expand_dims() 和 numpy.concatenate() 的 C++ 等价物
- json - API POST 端点和图像处理
- powershell - 使用 Powershell 暂停 Bitlocker - 出现错误