【问题标题】:Best way to feed text documents that contain labeled utterances into a deep learning model将包含标记话语的文本文档输入深度学习模型的最佳方法
【发布时间】:2020-04-24 11:28:54
【问题描述】:

我正在 tensorflow 中构建文本分类模型(实验从 BiLSTM 到 1DConvnet 等不同架构)我的数据结构如下:

1 个文档语料库

~ 100 个文档,由独立但上下文相似的多方对话转录(时间序列)组成。

~ 每个文档有 200 个被标记的话语(所有文档的标记约定相同

换句话说,它看起来像这样(标签结构看起来相同,但每个字符串有一个 int):

data = [
       [
       'hello how are you'
       'i am good'
       'whats the weather today'
       ...,
       ],
       [
       'how long have you had that cough'
       'roughly 2 weeks'
       'anything else'
       ...,
       ],
       ...,
       ]
       

现在,我通过扁平化所有文档将数据作为字符串(数据)和整数(标签)的扁平列表输入到模型中。这可行,但我想知道这是否是处理我的数据的最佳方式。 IIUC,使用任何类型的 RNN 意味着我的模型正在“记住”以前的数据。但是,由于每个文档都包含单独的对话,因此文档 1 中的文本不会影响文档 2 中的文本,依此类推。直观地说,由于每个文档都是一个独立的对话,我希望模型在对话结束时“记住”对话开始时发生的事情,但在进入下一个时“忘记”。这种直觉正确吗?

在这种情况下,最佳做法是什么?有没有办法一次输入一份文件(即将批量大小设置为文件长度?)?这会有所不同吗,或者是一个平面列表?

谢谢。

【问题讨论】:

  • 所以你的文件或你的话语被标记了?
  • @SamH。只有我的话语被标记,而不是文档。
  • 模型的目标是接收一个文档(这些通常称为对话),并为对话中的每个话语生成一个标签?您能否将标签添加到示例数据中?

标签: python tensorflow keras deep-learning nlp


【解决方案1】:

您似乎有一个对话集合,并且希望将对话中的每个回合分类为若干类。

一个类似的、经过充分研究的问题是对话行为分类。对话行为分类是根据话语在对话中的功能(即说话者正在执行的行为)对话语进行分类的任务。对话行为是一种言语行为(关于言语行为理论,请参阅Austin (1975)Searle (1969))。

论文“Dialogue Act Sequence Labeling using Hierarchical encoder with CRF”](https://arxiv.org/abs/1709.04250) 有可用代码:GitHub。这是学术代码,而不是最清晰的。目前尚不清楚他们使用的是什么版本的 TF。

RE:批量大小 - 他们使用 batchSize = 2 (line)。对话有可变长度的话语。

我认为你应该阅读这篇论文,有很多相关的引用,比如

我们提出了一种分层循环编码器,其中第一个编码器在话语级别运行,对每个话语中的每个单词进行编码,然后 第二个编码器在会话级别运行,编码 对话中的每个话语,基于前一个编码器的表示。这两个编码器确保 第二个编码器的输出捕获话语之间的依赖关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 2018-08-13
    • 2020-01-29
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多