我正在使用Gensim Doc2Vec模型,尝试集中部分客户支持对话.我的目标是为支持团队提供自动回复建议.
图1:显示了在下一个对话行中回答用户问题的示例对话,从而可以轻松提取数据:
在谈话期间,"你好"和"我们的办公室位于纽约市"应该被建议
图2:描述了问题和答案不同步的对话
在谈话期间,"你好"和"我们的办公室位于纽约市"应该被建议
图3:描述了一个对话,其中答案的上下文是随着时间的推移建立的,并且为了分类目的(我假设),一些行是冗余的.
在对话过程中,"这里是免费试用帐户的链接"应该被建议
每个会话行(简化)我有以下数据:
谁写了行(用户或代理),文本,时间戳
我正在使用以下代码来训练我的模型:
from gensim.models import Doc2Vec
from gensim.models.doc2vec import TaggedLineDocument
import datetime
print('Creating documents',datetime.datetime.now().time())
context = TaggedLineDocument('./test_data/context.csv')
print('Building model',datetime.datetime.now().time())
model = Doc2Vec(context,size = 200, window = 10, min_count = 10, workers=4)
print('Training...',datetime.datetime.now().time())
for epoch in range(10):
print('Run number :',epoch)
model.train(context)
model.save('./test_data/model')
Run Code Online (Sandbox Code Playgroud)
问:我应该如何构建我的训练数据以及可以应用哪些启发式方法从原始数据中提取它?