语义分析词格分类
命名实体识别(NER, named entity recognization)和词性归类是 NLP 技术中的关键一环。过去 NLP 领域有不少流行的开源项目专注在这个领域,如 Spacy、NLTK 等等。我们来试试 ChatGPT 在这方面的表现情况如何。我们从"四渡赤水"的百度百科词条中,复制一段文本来测试 ChatGPT 的表现:
识别这段文本中的命名实体和词性分类:毛泽东指挥中央红军三个月的时间六次穿越三条河流,转战川贵滇三省,巧妙地穿插于国民党军重兵集团围剿之间,不断创造战机,在运动中大量歼灭敌人,牢牢地掌握战场的主动权,取得了红军长征史上以少胜多,变被动为主动的光辉战例。
运行结果如下所示。令人惊讶的是,ChatGPT 可以直接识别出"红军长征"是一个事件名,而没有当做一个主谓结构的词组。谁说 ChatGPT 不太懂中文的,它真的很懂。
命名实体:* 毛泽东:人名 * 中央红军:组织名 * 川贵滇:地名 * 国民党军:组织名 * 红军长征:事件名词性分类:* 毛泽东:名词,作主语 * 指挥:动词,作谓语 * 中央红军:名词,作宾语 * 三个月的时间:名词短语,作时间状语 * 六次:数词,作数量修饰语 * 穿越:动词,作谓语 * 三条:数词,作数量修饰语 * 河流:名词,作宾语 * 转战:动词,作谓语 * 川贵滇:地名,作地点状语 * 三省:数词,作数量修饰语 * 巧妙地:副词,修饰动词“穿插” * 穿插:动词,作谓语 * 国民党军:名词,作宾语 * 重兵集团:名词,作宾语修饰语 * 围剿:动词,作宾语修饰语 * 不断:副词,修饰动词“创造” * 创造:动词,作谓语 * 战机:名词,作宾语 * 运动中:动态词性,作时间状语 * 大量:副词,修饰动词“歼灭” * 歼灭:动词,作谓语 * 敌人:名词,作宾语 * 牢牢地:副词,修饰动词“掌握” * 掌握:动词,作谓语 * 战场:名词,作宾语 * 主动权:名词,作宾语 * 取得:动词,作谓语 * 红军长征史上:名词短语,作时间状语 * 以少胜多:成语,作宾语修饰语 * 变被动为主动:成语,作宾语修饰语 * 光辉:形容词,修饰名词“战例” * 战例:名词,作宾语。
词性分类看起来有些啰嗦,不是很易懂。还是 Spacy 的格式更舒服。让 ChatGPT 直接按Spacy 格式输出试试?
用 spacy 的方式输出依存关系
ChatGPT 同时给出了 spacy 源代码,以及实际可能的输出结果,并都用代码框高亮显示出来。