要将文本转换为矢量,有很多方法可以做到,这都取决于用例。最直观的一种是使用词频,即,给定语料库的词汇表(所有可能的词),所有文本文档都将表示为一个向量,其中每个条目代表文本文档中单词的出现次数。
有了这个词汇:
["machine", "learning", "is", "a", "new", "field", "in", "computer", "science"]
以下案文:
["machine", "is", "a", "field", "machine", "is", "is"]
将被转换为这个向量:
[2, 0, 3, 1, 0, 1, 0, 0, 0]
这种技术的一个缺点是向量中可能有很多 0,其大小与语料库的词汇量相同。这就是为什么还有其他技术。然而,词袋经常被提及。使用tf.idf的版本略有不同
const vocabulary = ["machine", "learning", "is", "a", "new", "field", "in", "computer", "science"]
const text = ["machine", "is", "a", "field", "machine", "is", "is"]
const parse = (t) => vocabulary.map((w, i) => t.reduce((a, b) => b === w ? ++a : a , 0))
console.log(parse(text))
还有以下模块可能有助于实现您想要的