-1

我想使用 R 基于 co-occurrences 关键字对数据进行聚类。与其他帖子相比,我遇到了 2 个困难。

  1. 词是不同层次的
  2. 关键字不一定按顺序或层次结构级别显示

例子

Keywords
Food;Fruit;Banana
Food;Fruit;Apple
Fruit;Food;Orange
Food;Bread;Toast
Food;Bread;Whole Grain
Bed;Bedroom;Furniture
Furniture;Bedroom;Bed
Furniture;Living Room;Chair
Furniture;Bedroom;Chair

我希望结果是关键字在第一级分支到食品和家具。在第二个和第三个还有更多的分支,例如卧室、客厅。如果我使用层次聚类分析

hc <- hclust(dist(data))
plot(hc)

我最终会将“家具”作为最低级别的类别之一,但在我的示例中它是一个“节点”。

有解决这个问题的功能吗?

最佳皮特

4

2 回答 2

1

评论太长了,但可能不是您想要的:

df <- read.csv2(header=F, comment.char="#", text="
Food;Fruit;Banana
Food;Fruit;Apple
#Fruit;Food;Orange
Food;Bread;Toast
Food;Bread;Whole Grain
#Bed;Bedroom;Furniture
Furniture;Bedroom;Bed
#Furniture;Living Room;Chair
Furniture;Bedroom;Chair")

library(data.tree)
df$pathString <- with(df, paste("root", V1, V2, V3, sep="/"))
dt <- as.Node(df)
dt
#                  levelName
# 1  root                   
# 2   ¦--Food               
# 3   ¦   ¦--Fruit          
# 4   ¦   ¦   ¦--Banana     
# 5   ¦   ¦   °--Apple      
# 6   ¦   °--Bread          
# 7   ¦       ¦--Toast      
# 8   ¦       °--Whole Grain
# 9   °--Furniture          
# 10      °--Bedroom        
# 11          ¦--Bed        
# 12          °--Chair  

看看data.tree 小插曲

于 2015-12-09T16:03:42.457 回答
0

您所描述的与聚类分析不同

请执行下列操作:

  1. 计算每个术语的频率。
  2. 按词频降序对每一行进行排序。
  3. 将每一行插入树中。

树将分支成最常用的术语,下面有更具体的术语。

除了按频率计数+排序之外,这里没有进行任何分析——所以没有什么高级或花哨但简单明了。

于 2015-12-09T22:48:20.180 回答