一个自由文本切词的例子:
“请访问:http://www.abc.com/here.htm下载资料”
要切分成四部分:“请访问”(汉字) | “:”(冒号) | “http://www.abc.com/here.htm”(网址) | “下载资料”(汉字)
机器智能识别数据,要求自动识别出各种文本数据的组织结构,并检测其中的一些错误。
因为输入的文本有各种可能,有可能是中、英、日、韩等各国语言,以及繁体、拼音、表情符号、数学公式、html标记、编程语言段落、文本表格,也有可能是html、xml、json、csv格式的数据,数字有可能是日期、价格、手机号、身份证号、ip地址等,你很难写一套固定的程序来处理全部可能性。
统计学的方法是有用的,但统计学在具体规则细节和深层推理方面都是短板,而且对训练集要求较高,不适合多变的结构数据。
引入自动编程的思路!
面对模式搭配较多的字符串内容,与其编写固定程序对每个字符进行各种排列组合的函数检测,不如先抽取少量样本检测,并做出假设,以此假设为基础自动生成代码来验证。如果验证不通过,则针对新的情况自动修改代码,以适应新的需求。
生成代码的方式 -- 正则表达式形式
1. 大部分程序处理文本的过程,可以用状态机等价转换。
2. 正则表达式的本质是有限状态机,由状态驱动,虽然是不完备的,但可以满足词法分析的大部分需求。
3. 如果程序能检测数据的变化,以此动态生成或修改正则表达式,那么就可以把有限状态变为无限状态。
4. 正则表达式是简单的文本形式,容易通过程序生成或修改。
“请访问:http://www.abc.com/here.htm下载资料”
要切分成四部分:“请访问”(汉字) | “:”(冒号) | “http://www.abc.com/here.htm”(网址) | “下载资料”(汉字)
机器智能识别数据,要求自动识别出各种文本数据的组织结构,并检测其中的一些错误。
因为输入的文本有各种可能,有可能是中、英、日、韩等各国语言,以及繁体、拼音、表情符号、数学公式、html标记、编程语言段落、文本表格,也有可能是html、xml、json、csv格式的数据,数字有可能是日期、价格、手机号、身份证号、ip地址等,你很难写一套固定的程序来处理全部可能性。
统计学的方法是有用的,但统计学在具体规则细节和深层推理方面都是短板,而且对训练集要求较高,不适合多变的结构数据。
引入自动编程的思路!
面对模式搭配较多的字符串内容,与其编写固定程序对每个字符进行各种排列组合的函数检测,不如先抽取少量样本检测,并做出假设,以此假设为基础自动生成代码来验证。如果验证不通过,则针对新的情况自动修改代码,以适应新的需求。
生成代码的方式 -- 正则表达式形式
1. 大部分程序处理文本的过程,可以用状态机等价转换。
2. 正则表达式的本质是有限状态机,由状态驱动,虽然是不完备的,但可以满足词法分析的大部分需求。
3. 如果程序能检测数据的变化,以此动态生成或修改正则表达式,那么就可以把有限状态变为无限状态。
4. 正则表达式是简单的文本形式,容易通过程序生成或修改。