人工智能(Artificial Intelligence),英文缩写为AI。百度百科是这样介绍的:它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
下面我将用技术的层面解释人工智能的实现:一般人工智能会用到ASR和NLP技术以及其他方面的技术:
ASR技术:语音识别技术,也被称为自动语音识别Automatic Speech Recognition,(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列。与说话人识别及说话人确认不同,后者尝试识别或确认发出语音的说话人而非其中所包含的词汇内容。其实说得通俗点就是把说话人说得话转换成文字。
NLP:自然语言处理(Natural Language Processing:NLP)是计算机科学、人工智能以及语言学的交叉学科,旨在解决计算机与人类语言之间的交互问题,这其中包括对自然语言的分析、理解、生成、检索、变换及翻译等方面。其作用是把文字经过算法匹配程序预设的语句,从而转译成json或者其他格式。
这是一个简单的匹配语句的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<package name=“packageName” suffix="xml" final="true" T="1" outputText="true">
<item name=“add” output="true">
<set value=“+”>加</set>
<set value=“+”>加上</set>
</item>
<item name=“reduce” output="true">
<set value=“-”>减</set>
<set value=“-”>减去</set>
</item>
<item name=“multiply” output="true">
<set value=“*”>乘</set>
<set value=“*”>乘以</set>
</item>
<item name=“divide” output="true">
<set value=“/”>除</set>
<set value=“/”>除以</set>
</item>
//系统识别的数字返回的格式是{text:”一”,number:”1”}
<item name=“number1” output="true">
<pkg>system.number</pkg>
</item>
<item name="number2” output="true">
<pkg>system.number</pkg>
</item>
<!-- 加法计算 -->
<patternlist intent="add_intent”>
<pattern T="1">
//例如一加一等于几
<value>$number1$add$number2等于几</value>
//例如一加一等于多少
<value>$number1$add$number2等于多少</value>
</pattern>
</patternlist>
<!-- 减法计算 -->
<patternlist intent="add_intent”>
<pattern T="1">
//例如一减一等于几
<value>$number1$reduce$number2等于几</value>
//例如一减一等于多少
<value>$number1$reduce$number2等于多少</value>
</pattern>
</patternlist>
</package>
首先这个配置文件会录入到管理后台,然后经过ASR识别语音“一加一等于几“,解析成文字,经过NPL匹配预先录入的语句,从而触发packageName项目下的add_intent这个intent,解析成下面的json
{
domain:packgeName,
intent: add_intent,
slots:{
number1:{text:”一”,number:”1”},
add:”+”,
number2:{text:”一”,number:”1”},
}
}
这段json会被Intent携带,经过packageName隐式启动这个App
<intent-filter>
<action android:name="packageName"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
启动这个App后,接下来又会从Intent中取出来json解析,根据intent和slots分发意图,处理数据。这就是简单的数据流程。当然要想更加智能,首先语句要匹配的很丰富,其次语句的训练也要很精准,识别准确率高。
当然要想具备主动学习的能力,那就离不开大数据以及数据算法呢。