自然语言处理 (NLP) 和自然语言理解 (NLU) 是密切相关但又截然不同的机器处理人类语言的组成部分。 NLP 指的是更广泛的技术和算法领域,这些技术和算法使计算机能够处理、分析和操作文本或语音。 这包括诸如分词(将文本分解为单词或短语)、词性标注或句法分析之类的任务。 另一方面,NLU 是 NLP 的一个专门子集,专注于从语言中提取意义、意图和上下文。 虽然 NLP 处理语言的结构方面,但 NLU 旨在解释语言的含义,例如识别聊天机器人中的用户目标或检测评论中的情感。
它们的主要区别在于范围和复杂性。 NLP 通常处理表面级别的语言机制。 例如,拼写检查器使用 NLP 来识别拼写错误的单词,而翻译工具可能依赖 NLP 在语法上重构句子。 然而,NLU 需要更深层次的语义分析。 以客户支持聊天机器人为例:NLP 可能会将“我无法登录我的帐户”这句话解析为标记,而 NLU 会识别用户的意图(登录问题)并提取相关实体(例如,“帐户”)。 NLU 必须处理歧义,例如区分“book a flight”(预订航班)和“read a book”(物理对象),这需要上下文感知和推理。
对于开发人员来说,这种区别会影响工具选择和系统设计。 像 spaCy 或 NLTK 这样的 NLP 库为分词或命名实体识别提供基础工具。 像 Rasa 或 Dialogflow 这样的 NLU 系统以此为基础,将用户输入映射到预定义的意图或操作。 虽然 NLP 可以使用基于规则的方法(例如,用于模式匹配的正则表达式)运行,但 NLU 通常需要机器学习模型(例如,transformers)来处理措辞和上下文的可变性。 例如,NLP 管道可能会从文本中提取日期,但 NLU 会确定日期是指截止日期、事件还是历史参考。 在实践中,大多数应用程序都结合了两者:NLP 预处理数据,而 NLU 解释数据——就像语音助手在执行命令 (NLU) 之前转录语音 (NLP) 一样。