spacy最新版本开始支持中文
1, 下载 中文语言模型 zh_core_web_md-2.3.1.tar.gz
下载地址:https://spacy.io/models/zh
2,rasa 聊天机器人 config.yml 改进 配置:
language: zh
pipeline:
- name: SpacyNLP # 预训练词向量
model: "zh_core_web_md"
- name: SpacyTokenizer # 文本分词器
- name: SpacyEntityExtractor #文本特征化
- name: SpacyFeaturizer #特征提取器 将一句话变成一个向量
pooling: mean
- name: CountVectorsFeaturizer #创建用户信息和标签(意图和响应)的词袋表征 为意图分类和 response selection创建特征
- name: CountVectorsFeaturizer
analyzer: "char_wb"
min_ngram: 1
max_ngram: 4
- name: DIETClassifier #意图分类
epochs: 100
- name: EntitySynonymMapper #同义实体
- name: ResponseSelector
epochs: 100
# Configuration for Rasa Core.
# https://rasa.com/docs/rasa/core/policies/
policies:
- name: MemoizationPolicy
- name: TEDPolicy
max_history: 5
epochs: 100
- name: MappingPolicy
~
直接在nlu.md中写入中文:
## intent:greet
- 你好
- 您好
- hi
- 早上好
- 中午好
- 晚上好
## intent:goodbye
- 再见
- 回头见
- 拜拜
## intent:affirm
- 好的
- 好
- 行
## intent:deny
- 不行
- 不可以
- 不同意
- 没门
## intent:bot_challenge
- 你是人吗
- 你是机器人吗
- 我在和机器人说话吗
- 我在和人说话吗?
~
3,如何挑选哪个意图分类的组件?
组件有两类 预训练Embedding 和 监督式Embedding。
第一类 预训练Embedding: sklearnintentclassifier
使用 spaCy library加载预训练语言模型,包含中文。
什么时候使用此组件? 满足项目场景的预训练词嵌入存在,且能适用于项目时。
第二类 监督式Embedding:embeddingintentclassifier
从0开始训练词嵌入。通常和 countvectorsfeaturizer 组件一起使用。
特点:需要足够的训练数据,此分类器独立于语言,只带多意图的消息,十分灵活。
以上两种分类器的选择可以通过以下决策树进行:
是否有符合场景机器人语言的预训练词嵌入? 是 --> 下一题,?否 --> 监督式,
是否需要每次消息支持多意图分类??是 --> 监督式, 否 --> 下一题
是否存在领域特殊的词典? 是 --> 下一题,?否 --> 预训练,
是否有足够多的训练数据??是 --> 监督式, 否 --> 预训练