R构造文档术语矩阵如何匹配其值由空格分隔的短语组成的字典

标签 r dictionary text-mining term-document-matrix quanteda

当使用R进行文本挖掘时,在对文本数据进行重新处理后,我们需要创建一个文档术语矩阵以进行进一步的探索。但是和中文类似,英语也有一些特定的阶段,比如“语义距离”、“机器学习”,如果把它们分词成词,它的含义就完全不同了,我想知道如何匹配预先定义的词典值由空格分隔的术语组成,例如包含“语义距离”、“机器学习”。如果一个文档是“我们可以使用机器学习方法来计算单词语义距离”,当将该文档应用于字典[“语义距离”,“机器学习”]时,它将返回一个1x2矩阵:[语义距离,1 ;机器学习,1]

最佳答案

使用 Quanteda 可以做到这一点,尽管它需要为每个短语构建一个字典,然后预处理文本以将短语转换为标记。要成为“ token ”,短语需要用空格以外的其他内容连接 - 这里是“_”字符。

这里有一些示例文本,包括OP中的短语。我为插图添加了两个附加文本 - 下面,文档特征矩阵的第一行生成所请求的答案。

txt <- c("We could use machine learning method to calculate the words semantic distance.",
         "Machine learning is the best sort of learning.",
         "The distance between semantic distance and machine learning is machine driven.")

短语到标记的当前签名要求 phrases 参数是字典或搭配对象。这里我们将其设为字典:

mydict <- dictionary(list(machine_learning = "machine learning", 
                          semantic_distance = "semantic distance"))

然后我们预处理文本以将字典短语转换为其键:

toks <- tokens(txt) %>%
    tokens_compound(mydict)
toks
# tokens from 3 documents.
# text1 :
# [1] "We"                "could"             "use"               "machine_learning" 
# [5] "method"            "to"                "calculate"         "the"              
# [9] "words"             "semantic_distance" "."                
# 
# text2 :
# [1] "Machine_learning" "is"               "the"              "best"            
# [5] "sort"             "of"               "learning"         "."               
# 
# text3 :
# [1] "The"               "distance"          "between"           "semantic_distance"
# [5] "and"               "machine_learning"  "is"                "machine"          
# [9] "driven"            "."    

最后,我们可以构建文档特征矩阵,使用默认的“glob”模式匹配包含下划线字符的任何特征来保留所有短语:

mydfm <- dfm(toks, select = "*_*")
mydfm
## Document-feature matrix of: 3 documents, 2 features.
## 3 x 2 sparse Matrix of class "dfm"
##        features
## docs    machine_learning semantic_distance
##   text1                1                 1
##   text2                1                 0
##   text3                1                 1

(答案已更新 >= v0.9.9)

关于R构造文档术语矩阵如何匹配其值由空格分隔的短语组成的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732659/

相关文章:

r - 由qr.Q()迷惑:什么是“紧凑”形式的正交矩阵?

r - 使用聚合数据创建直方图

python - 如何将两个文本文件放入字典(小修复)?

javascript - 数组的性能包括与映射到对象并在 JavaScript 中访问它

Lucene 实体提取

python - 来自 Scopus API 的请求仅写入 PDF 的第一页

r - 当列表嵌套在 R 列表中时,如何简洁地将多个列表的所有元素命名为相同?

r - 如何在 R 中生成整数和定义长度的随机向量?

Python:在列表字典中使用 Counter

Python:屏蔽电子邮件文本中的命名实体