我正在尝试训练支持向量机来帮助检测字符串之间的相似性。我的训练数据由两个文本字段和一个包含 0 或 1 以表示相似性的第三个字段组成。最后一个字段是在编辑距离操作的帮助下计算的。我知道在继续之前我需要将两个文本字段转换为数值。我希望找出实现这一目标的最佳方法是什么?
训练数据如下所示:
ID MAKTX_Keyword PH_Level_04_Keyword Result
266325638 AMLODIPINE AMLODIPINE 0
724712821 IRBESARTANHCTZ IRBESARTANHCTZ 0
567428641 RABEPRAZOLE RABEPRAZOLE 0
137472217 MIRTAZAPINE MIRTAZAPINE 0
175827784 FONDAPARINUX ARIXTRA 1
456372747 VANCOMYCIN VANCOMYCIN 0
653832438 BRUFEN IBUPROFEN 1
917575539 POTASSIUM POTASSIUM 0
222949123 DIOSMINHESPERIDIN DIOSMINHESPERIDIN 0
892725684 IBUPROFEN IBUPROFEN 0
我一直在尝试使用text2vec库,使用这个有用的小插图作为指南。这样做,我大概可以表示向量空间中的一个字段。
- 但是我怎样才能使用这个库来同时管理两个文本字段呢?
- 我应该将两个字符串字段连接成一个字段吗?
- text2vec是最好的方法吗?
将用于管理其中一个字段的代码:
library(text2vec)
library(data.table)
preproc_func = tolower
token_func = word_tokenizer
it_train = itoken(Train_PRDHA_String.df$MAKTX_Keyword,
preprocessor = preproc_func,
tokenizer = token_func,
ids = Train_PRDHA_String.df$ID,
progressbar = TRUE)
vocab = create_vocabulary(it_train)
vectorizer = vocab_vectorizer(vocab)
t1 = Sys.time()
dtm_train = create_dtm(it_train, vectorizer)
print(difftime(Sys.time(), t1, units = 'sec'))
dim(dtm_train)
identical(rownames(dtm_train), Train_PRDHA_String.df$id)