【Wolfram语言】35 自然语言理解

35 自然语言理解

词汇表

函数 说明
Interpreter["type"] 指定一个解释自然语言的函数
TextCases["text","type"] 在文本中查找给定类型的实例
TextStructure["text"] 查找文本的语法结构
WordTranslation["word","language"] 将单词翻译为另一语言

回顾

真实世界数据一章中,介绍了如何使用 ctrl+= 来输入自然语言。

现在介绍如何设置能够理解自然语言的函数。
Interpreter 是关键。

解释器函数

告诉 Interpreter 想要得到的类型,它会尝试将任意字符串按该类型进行解释。

颜色

将字符串 "hot pink" 解释为颜色:

wl 复制代码
In[]:=Interpreter["Color"]["hot pink"]

货币

Interpreter 将自然语言转换为可计算的 Wolfram 语言 表达式。

下面是一个涉及货币金额的示例。

解释各种货币金额:

wl 复制代码
In[]:=Interpreter["CurrencyAmount"][{"4.25 dollars", "85 cents", "3400 rupees", "5 euros"}]

使用当前汇率计算总额:

wl 复制代码
In[]:=Total[{Quantity[4.25, "USDollars"], Quantity[85, "USCents"], Quantity[3400, "IndianRupees"], Quantity[5, "Euros"]}]

地理

城市

示例:将字符串 nyc 解释为城市

wl 复制代码
In[]:=Interpreter["City"]["nyc"]

Big Apple 是纽约市的别名,返回值相同:

wl 复制代码
In[]:=Interpreter["City"]["the big apple"]
位置

Interpreter 给出白宫的地理位置:

wl 复制代码
In[]:=Interpreter["Location"]["White House"]
Out[]=GeoPosition[{38.8977, -77.0366}]

也可以从街道地址解析:

wl 复制代码
In[]:=Interpreter["Location"]["1600 Pennsylvania Avenue, Washington, DC"]
Out[]=GeoPosition[{38.8977, -77.0366}]

其他

Interpreter 支持数百种对象类型。

大学

解释大学名称(U of I 对应哪个大学取决于地理位置):

wl 复制代码
In[]:=Interpreter["University"][{"Harvard", "Stanford", "U of I"}]

化学品

解释化学品名称:

wl 复制代码
In[]:=Interpreter["Chemical"][{"H2O", "aspirin", "CO2", "wolfram"}]

动物

解释动物名称并获取它们的图像:

wl 复制代码
In[]:=EntityValue[Interpreter["Animal"][{"cheetah", "tiger", "elephant"}], "Image"]

文本选择

Interpreter 解释完整字符串。
TextCases 则尝试从字符串中挑出你请求的实例。

提取文本中的名词

wl 复制代码
In[]:=TextCases["A sentence is a linguistic construct", "Noun"]
Out[]={"sentence", "construct"}

提取货币金额:

wl 复制代码
In[]:=TextCases["Choose between $5, €5 and ¥5000", "CurrencyAmount"]
Out[]={"$5", "€5", "¥5000"}

你可以使用 TextCases 从文本中挑出特定类型的实体。

下面示例从维基百科文章中挑出国家名并生成词云。

从当前关于旅游的维基百科文章生成国家名称词云:

wl 复制代码
In[:=WordCloud[TextCases[WikipediaData["tourism"], "Country"]]

文本结构

TextStructure 显示文本的整体结构。

将一句英语句子解析为语法单元:

wl 复制代码
In[]:=TextStructure["You can do so much with the Wolfram Language."]

另一种表示,作为图:

wl 复制代码
In[]:=TextStructure["You can do so much with the Wolfram Language.", "ConstituentGraphs"]

特定词类列表

WordList[] 给出常用词列表。
WordList["Noun"] 等返回特定词类列表。

列出前 20 个常见动词:

wl 复制代码
In[]:=Take[WordList["Verb"], 20]
Out[]={aah,abandon,abase,abash,abate,abbreviate,abdicate,abduct,abet,abhor,abide,abjure,ablate,abnegate,abolish,abominate,abort,abound,abrade,abridge} 

单词属性

可以研究单词属性。

下面比较名词、动词和形容词长度分布的直方图。

wl 复制代码
In[]:=Histogram[StringLength[WordList[#]]] & /@ {"Noun", "Verb", "Adjective"}

单词翻译

Wolfram 语言 不仅支持英语。
WordTranslation 提供单词翻译。

hello 翻译为法语:

wl 复制代码
In[]:=WordTranslation["hello", "French"]
Out[]={bonjour, hello, holà, ohé}

翻译为韩语:

wl 复制代码
In[]:=WordTranslation["hello", "Korean"]
Out[]={여보세요, 안녕하세요}

翻译为韩语并转写为拉丁字母:

wl 复制代码
In[]:=Transliterate[WordTranslation["hello", "Korean"]]
Out[]={yeoboseyo, annyeonghaseyo}

若比较多种语言,可传 AllWordTranslation

结果为关联,按语言使用频率大致排序。

hello 翻译为世界上最常用的 5 种语言:

wl 复制代码
In[]:=Take[WordTranslation["hello", All], 5]

取前 100 种语言,查看每种语言第一个翻译的首字符,并生成词云,显示在这些语言中表示 hello 的首字母分布:

wl 复制代码
In[]:=WordCloud[Values[StringTake[First[#], 1] & /@ Take[WordTranslation["hello", All], 100]]]

下一步

创建云端应用

相关推荐
项目題供诗21 小时前
C语言基础(十)
c语言·开发语言
代码游侠21 小时前
学习笔记——GPIO按键与中断系统
c语言·开发语言·arm开发·笔记·嵌入式硬件·学习·重构
R-sz21 小时前
app登录接口实现,基于JWT的APP登录认证系统实现方案
java·开发语言·python
Elieal21 小时前
@Api 系列注解
java·开发语言
Remember_99321 小时前
【数据结构】深入理解Map和Set:从搜索树到哈希表的完整解析
java·开发语言·数据结构·算法·leetcode·哈希算法·散列表
浅念-21 小时前
C++第一课
开发语言·c++·经验分享·笔记·学习·算法
Coding茶水间21 小时前
基于深度学习的路面裂缝检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
开发语言·人工智能·深度学习·yolo·目标检测·机器学习
charlie11451419121 小时前
现代嵌入式C++教程:对象池(Object Pool)模式
开发语言·c++·学习·算法·嵌入式·现代c++·工程实践
TTGGGFF21 小时前
控制系统建模仿真(二):掌握控制系统设计的 MAD 流程与 MATLAB 基础运算
开发语言·数据结构·matlab
郑州光合科技余经理1 天前
O2O上门预约小程序:全栈解决方案
java·大数据·开发语言·人工智能·小程序·uni-app·php