代码之家  ›  专栏  ›  技术社区  ›  UbuntuNewbie

如何在R Studio中将文本字段转换为支持向量机的数字/向量空间?[副本]

  •  -1
  • UbuntuNewbie  · 技术社区  · 7 年前

    训练数据如下所示:

    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
    

    文本2VEC 图书馆 using this useful vignette 作为指导。这样做,我大概可以表示向量空间中的一个场。

    • 但是我如何使用这个库同时管理这两个文本字段呢?
    • 文本2VEC 最好的方法是什么?

    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) 
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Dmitriy Selivanov    7 年前

    将文档嵌入同一空间的一种方法是从两列中学习词汇:

    preproc_func = tolower
    token_func = word_tokenizer
    union_txt = c(Train_PRDHA_String.df$MAKTX_Keyword, Train_PRDHA_String.df$PH_Level_04_Keyword)
    it_train = itoken(union_txt, 
                      preprocessor = preproc_func, 
                      tokenizer = token_func, 
                      ids = Train_PRDHA_String.df$ID, 
                      progressbar = TRUE)
    vocab = create_vocabulary(it_train)
    vectorizer = vocab_vectorizer(vocab)
    
    it1 = itoken(Train_PRDHA_String.df$MAKTX_Keyword, preproc_func, 
                 token_func, ids = Train_PRDHA_String.df$ID)
    dtm_train_1 = create_dtm(it1, vectorizer)
    
    it2 = itoken(Train_PRDHA_String.df$PH_Level_04_Keyword, preproc_func, 
                 token_func, ids = Train_PRDHA_String.df$ID)
    dtm_train_2 = create_dtm(it2, vectorizer)
    

    然后你可以把它们组合成一个矩阵:

    dtm_train = cbind(dtm_train_1, dtm_train_2)
    

    char_tokenizer ngram > 1 (说 ngram = c(3, 3) ). 检查一下很好 stringdist 包裹我想你收到了 Result