我正在尝试使用R tm软件包来解决字符串比较问题(单字字符串,而不是多字文本)。 在这些方面,我已经使用了Levenshtein距离可以给我带来有意义的结果,但是我并不完全满意。 在阅读了一篇我觉得很有趣的文章之后,我现在正尝试使用余弦相似度。
我已经研究了文档,并且阅读了一些文章,但是目前看来,我还不了解算法功能。
当我将术语作为单词使用时,我就可以使用它。
例如
import sys, subprocess
sys.stdout.write("Prefix: ")
response = subprocess.check_output(["cmd", "--option", "filename.x"])
sys.stdout.write(response.decode("UTF-8"))
sys.stdout.flush()
但是我无法要求系统对待每个字母
docs <- c ("open letters", "closed letters", "letters)
terms <- "open", "closed", "letters")
这将导致使用术语文档矩阵进行字符串比较。 但是也许已经有我的错误了。
在tm中实现单个单词字符串比较会是什么?
感谢您的帮助, P.s.我没有发布代码,因为这是一个更普遍的问题,但是我可以创建一个例子以防万一。
尼古拉
这是根据建议的工作代码:
c ("a", "b", "c", "d")
答案 0 :(得分:-1)
这是我所能做的。 给一个文档,在我的情况下为“ doc”字符串向量,系统将为我提供TDM矩阵,如果完全激活匹配项(例如,关闭->关闭门),则条件为1,但门与oor不匹配。
示例:
library(tm)
doc <- c( "closed door", "Open door", "door", "doo", "oor", "house" )
doc_corpus <- Corpus( VectorSource(doc) )
control_list <- list(removePunctuation = TRUE, tolower = TRUE)
tdm <- TermDocumentMatrix(doc_corpus, control_list)
tf <- as.matrix(tdm)
关键是我已经阅读过,我也可以这样做,因为术语是单个字母,我想确认这是否有可能
因此要构建一个TDM,然后建立余弦距离以计算弦之间的距离。 但是我找不到任何文档。
感谢您的帮助, 尼古拉