长期以来,中文自然语言处理(NLP)的研究遭遇瓶颈,其中一个重要原因就是中文的语言学基本无法迁移到已有的成熟的深度学习模型中,这也是中文 NLP 难于英文的重要原因之一。而竹间智能在自然语言处理的研究中,结合深度学习、语言学和心理学等,通过 NLU 来弥补传统中文 NLP 在语言理解上的不足,取得了不错的成果。在此和大家分享一些竹间智能在中文自然语言交互研究中的经验和思考。 本文结合语言学和 NLP 的几个基本任务,从理论上对中文 NLP 的特点进行说明,同时展望 NLU 在中文自然语言交互上的一些方向。 1.中文分词 词是最小的能够独立运用的语言单位。「词」这个概念,是从西方引入的,在 1898 年《马氏文通》出版之前,传统的语言学研究对象是「字」,而不是「词」。汉语和英语最直观、最明显的不同,就是英语的词是天然的,由空格分开,而汉语的字紧密排列,从形式上看,其实没有「词」这个单位。 现代汉语的典型特征之一是双音节词占优势。古汉语常常是一字即一词,而现代汉语都把它们双音节化了,比如「目-->眼睛」「悦-->高兴、喜欢」。如果单单把「睛」、「兴」等字拿出来,它们承载的意义与原词是有差异的。加之考虑到实际应用的需求,以词为索引可以减小搜索空间、加快搜索速度、提高准确率,所以做分词是有必要的。 由于汉语的特殊性,在分词任务中,会碰到两种歧义现象:交叉歧义 (Cross Ambiguity) 和组合歧义 (Combination Ambiguity)。 (1) 老板有意见他。 (2) 老板对他有意见。 和 (2) 的正确切分是: (1) 老板/有意/见/他/。 (2) 老板/对/他/有/意见/。 这种属于交叉歧义。abc 三个成分,ab 可以分成一个词,bc 也可以分成一个词。 (3) 其他语言学起来很难。 (4) 语言学是以人类语言为研究对象的学科。 和 (4) 的正确切分是: (3) 其他/语言/学/起来/很/难/。 (4) 语言学/是/以/人类/语言/为/研究/对象/的/学科/。 这种就是组合歧义。ab 两个成分,组合在一起的时候是一个词,分开以后可以各自成词。 解决分词歧义的技术方法主要有三大类,分别是基于规则的方法,基于统计的方法(例如 CRF、HMM、Deep Learning 等),以及规则和统计结合。网上,也能查到一些相关的分词器实现。 在技术需求方面,有的需要细粒度的分词,有的需要粗粒度的,这都是实际应用会面对的矛盾。这也是由于汉语本身语素、词和短语的界限不明造成的。 臣妾做不到啊。 (5) 中的「做不到」,属于动补结构 (动词+补语),从语言学的角度看,是个短语。实际应用时,可以分成「做/不/到」,也可以「做不到」合在一起,看成一个词。 中文分词也是英文和中文 NLP 的一个基本不同,英文不需要分词,而中文需要进行分词,以便能够更好地进行后续 NLP 任务。当然,目前也有一些中文 NLP 技术,可以避开中文分词任务。 2. 词性标注 (Part-of-speech Tagging, POS) 汉语词性的独特之处在于,汉语作为孤立语/分析语,没有明显的形态变化,与英语等屈折语不同。比如: (6) 我感觉他喜欢我。(动词) (7) 我的感觉很准。(名词) 如果用英语说这两句话,应该是: (8)I feel he loves me. (动词) (9)My feeling is reliable.(名词) 同样一个「感觉」,其实是同形异义词。我们必须准确识别两种词性。 上面说的这种情况名词和动词的区别是比较明显的。但汉语的复杂之处还不止这个。比如: (10) 他喜欢你。(动词) (11) 我很珍惜她的喜欢。(动词用作名词) 「喜欢」从绝大多数情况来看,都被人们看成一个动词,但例 (11) 就把动词当作名词用了,而且没有词形变化。这种情况在汉语里大量存在,这也就是沈家煊先生提出的汉语「名动包含」的观点。 汉语的这一特点会造成句子里的核心谓语动词难以识别的问题。还是拿例 (11) 来说,句子里有两个动词「珍惜」和「喜欢」,但核心谓语动词是「珍惜」。「喜欢」最好不要被判断为动词,否则会影响后续的句法、语义分析。 (责任编辑:本港台直播) |