为了实现下面的目标,我们开发了 text2vec
:
从概念上,我们可以把 API 分成以下几个部分:
参见 向量化.
create_*
系列函数, vocab_vectorizer()
and hash_vectorizer()
被用来生成词汇表,Document-Term matrices,Term co-occurence matrices。这些函数负责将文本转换为数字的形式。
create_vocabulary()
;create_dtm()
;create_tcm()
;vocab_vectorizer()
, hash_vectorizer()
.所有 create_*
函数支持 tokens 的迭代器作为输入。例子如下:
itoken()
用来生成 tokens 的迭代器ifiles()
用来生成文件迭代器。注意, text2vec 不处理文件输入输出,用户需要提供自定义的读取函数,比如 data.table::fread()
或者 readr
包。如果用户需要自定义文件来源,比如从数据库导入数据,用户可以自定义自己的迭代器函数
text2vec 提供统一的模型接口,与 scikit-learn
类似。text2vec 模型是可转换的,
所有 text2vec 模型都是可变的,这意味着 fit()
和 fit_transform()
方法将会根据指定参数修改模型。
所有的模型都有统一的借口,这里有一些重要的动词用来进行模型的处理:
model$new(...)
- 生成一个模型对象,设置初始化参数。这些参数是模型相关的,比如 LDA 模型需要设置主题数 k,alpha 和 eta 先验。model$fit(x, ...)
- 拟合模型model$fit_transform(x, ...)
- 拟合模型并转换数据model$transform(x_new, ...)
- 使用已经训练好的模型转换数据。参见 Distances .
text2vec 包提供了两套函数用来评价多种距离和相似性。所有函数都十分关注计算性能和内存的效率:
sim2(x, y, method)
- 计算两个矩阵,x和y,每一行的使用指定方法的相似性psim2(x, y, method)
- 计算两个矩阵,x和y,每一行的并行相似性。dist2(x, y, method)
- 计算两个矩阵,x和y,每一行的使用指定方法的距离dist2(x, y, method)
- 计算两个矩阵,x和y,每一行的使用指定方法的并行距离下面的方法已经实现了: