如何将可变长度字符串转换为向量?

时间:2018-03-29 10:34:23

标签: machine-learning classification word2vec

我正在研究分类算法,我得到了不同的字符串代码,它们有一些模式。

|:-----------|------------:|:------------:|
| Column 1   | Column 2    | Column 3     |
|:-----------|------------:|:------------:|
| MN009      | JIK9PO      | LEFTu        |
| MN010      | JIK9POS     | LEFTu        |
| MN011      | JIK9POKI    | LEFTu        |
| MN012      | KIJU        | LEFTu        |
| MN013      | RANDOM      | LEFTu        |
| MN014      | FT          | LEFTu        |
|:-----------|------------:|:------------:|

对于第1列和第3列,要素集可以是向量长度为​​5.

但我不知道如何创建可容纳第2列的功能集。

考虑:

  1. 创建大小等于最长字符串大小的要素向量 值和较小的字符串添加一些填充物。
  2. 在此处将字符串截断为固定长度(如5)并忽略额外的字符串 字符。
  3. 希望我对这个问题很清楚。谢谢:))

2 个答案:

答案 0 :(得分:2)

有两种解决方案:

  1. 你提到的那个;预定义长度,零填充序列 没有它。此长度可以设置为:

    • 当前最长的样本(更大的特征空间⇒时间/内存复杂性后果),
    • 或更短的长度(信息丢失⇒预测能力惩罚)。信息丢失源于忽略序列 高于该长度或截断它们并使用它们的减少 版本

      在这两种情况下,您都应该量化您选择的影响 (即,通过丢弃/截断我从数据中丢弃了多少信息,或者与使用较小长度相比,我的问题空间有多大)。

  2. 动态图形,基本上是可变形状网络,可以处理不同大小的序列。这些能力由PyTorch提供,并且(相对)直接实施(related SO问题)

答案 1 :(得分:1)

查看文档,pack-padded-sequence 帮助您避免动态图形,并允许网络忽略填充输入。这将是直接实施。

  

打包一个包含可变长度的填充序列的变量。