tensorflow - 使用 Tensorflow 应用 n-gram 和 TF-IDF
问题描述
我一直在尝试使用TfidfVectorizer迁移我在 scikit-learn 中编写的代码。scikit-learn API 非常有用,因为您可以选择 n-gram 的粒度(单词或字符级别)。基本上我有一个列表,name
我想创建一个name
分类模型。
我想使用 TensorFlow 完成 2 个步骤:
将 char 级别的 n-gram 提取应用于名称列表。`范围 2 的示例:Alan Smith 将是
['Al', 'la', 'an', 'n ', ' S', 'Sm', 'mi', 'it', 'th']
.根据上面生成的词汇表应用 TF-IDF。
我曾尝试使用ngram,但似乎唯一的选择是在单词级别使用 n-gram。任何见解我如何能做到这一点。
解决方案
只需使用列表理解将输入本身更改为字符级别:
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']]
推荐阅读
- javascript - 如何更新文本输入值以使用货币格式
- python - 在不同的集合中添加列
- ios - 从 paypal ios sdk swift 获取送货地址和发票号码
- ios - 在 Swift 中将带有“\n”的数组元素合并到字符串中
- sql - 在 oracle 中检查模式表空间的使用情况
- javascript - 在茉莉花测试中模拟声明 const
- python - 如何确保所有文件在 Python 中共享相同的结构?
- java - 使用 selenium,java 在 chrome 驱动程序中禁用 css 渲染
- ruby-on-rails - Heroku 部署失败 | 宝石安装 json -v '1.8.1'
- react-native - 在 React Native 中使用 requestAnimationFrame