首页 > 解决方案 > 使用 Tensorflow 应用 n-gram 和 TF-IDF

问题描述

我一直在尝试使用TfidfVectorizer迁移我在 scikit-learn 中编写的代码。scikit-learn API 非常有用,因为您可以选择 n-gram 的粒度(单词或字符级别)。基本上我有一个列表,name我想创建一个name分类模型。

我想使用 TensorFlow 完成 2 个步骤:

  1. 将 char 级别的 n-gram 提取应用于名称列表。`范围 2 的示例:Alan Smith 将是['Al', 'la', 'an', 'n ', ' S', 'Sm', 'mi', 'it', 'th'].

  2. 根据上面生成的词汇表应用 TF-IDF。

我曾尝试使用ngram,但似乎唯一的选择是在单词级别使用 n-gram。任何见解我如何能做到这一点。

标签: tensorflow

解决方案


只需使用列表理解将输入本身更改为字符级别:

x = 'Alan Smith'

[[b for b in a] for a in x.split()]

Out: [['A', 'l', 'a', 'n'], ['S', 'm', 'i', 't', 'h']]

然后在该输入上使用您的 ngrams 函数或手动构建 ngrams,如下所示:

ngrams = [[''.join(b) for b in zip(a,a[1:])] for a in x.split()]

Out: [['Al', 'la', 'an'], ['Sm', 'mi', 'it', 'th']]

推荐阅读