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

How to convert variable length string to vector?

我正在研究分类算法,我得到了具有某种模式的不同字符串代码。

|:-----------|------------:|:------------:|
| 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 并忽略多余的 字符。

希望我问清楚了。谢谢:)

有两种解决方案:

  1. 你说的那个;预定义长度,zero-padding 序列 达不到它。此长度可以设置为:

    • 目前最长的样本(更大的特征space⇒时间/内存复杂度后果),
    • 或更短的长度(信息丢失⇒预测能力损失)。信息丢失源于忽略序列 超过该长度或截断它们并使用它们的 cut-down 版本。

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

  2. 动态图,本质上是可变形状网络,可以处理不同大小的序列。这种能力由 PyTorch and are (relatively) straightforward to implement ( SO question)
  3. 提供

看看文档,pack-padded-sequence 帮助您避免动态图并允许网络忽略填充的输入。这将很容易实施。

Packs a Variable containing padded sequences of variable length.