1

我在 csv 中有原始数据,列名 w1 有公司名称。

w1
abcd  reit pvt ltd 
abcd reit  private ltd
ac abcd pte limited
abcd  reit pvt ltd
abcd singapore private limited company 
abcd  reit pvt ltd company 
abcd reit private limited company
abcd  reit private limited 
abcd  reit  private ltd
abcd   pte limited
abcd    reit pvt ltd company
abcd  singapore private limited company 
abcd  reit pvt ltd company 
abcd  reit private limited company

我正在编写一个神经网络 ML 程序,该程序将自行学习识别相似的公司名称。仅使用 ML 算法,如神经网络、RNN 等

我创建了一个列标签来分类相似的名称属于同一组,所以我的数据集变成了。

w1                                    label
abcd reit pvt ltd                        1
abcd reit  private ltd                   1
ac abcd pte limited                      2
abcd reit pvt ltd                        1
abcd singapore private limited company   3
abcd   reit pvt ltd company              1
abcd reit private limited company        1
abcd reit private limited                1
abcd  reit  private ltd                  1
abcd pte limited                         1
abcd reit pvt ltd company                1
abcd singapore private limited company   3
abcd reit pvt ltd company                1
abcd reit private limited company        1

我创建了哈希矩阵,但我无法将此矩阵提供给神经网络。

附上我的代码

library(readxl)
data <- read_excel("~/data.xlsx")
data1<-as.data.frame(data)
library(FeatureHashing)
library(Matrix)

###############  split data test train
library(caTools)
set.seed(101)
data2<-as.data.frame(data1)
# Create Split (any column is fine)
split = sample.split(data2$label, SplitRatio = 0.70)

# Split based off of split Boolean Vector
train = subset(data2, split == TRUE)
print(head(train,1))
test = subset(data2, split == FALSE)

hash.size(train)
d1<- hashed.model.matrix(label~  split(w1, delim= " "),
                      data = train, hash.size = 16, signed.hash = FALSE , 
create.mapping = TRUE)

在这里我有问题,因为我不知道如何将这个 d1 哈希矩阵输入到神经网络中,当我运行输入这个哈希矩阵到神经网络时,我得到了错误,

####### test hash input to neural net
nn <- neuralnet(
label~w1,
data=train, hidden=2, err.fct="sse",
linear.output=TRUE)

predicted.nn.values <- compute(nn,test[1:1] )
plot(nn)

有没有其他方法可以做到这一点,我也不确定如何将这个 d1 哈希矩阵输入神经网络

4

2 回答 2

0

你的方法奏效了吗?

另一种方法是。

  • 从奇怪的字符等中清除所有然后的名称。
  • 创建一个比较两个公司名称的训练数据集,如果它们匹配,则给出 1 或 0。模糊匹配(莱文斯坦距离)会对此有所帮助,因为您可以运行它来为您提供最可能的选项,然后手动分配它们。(这需要一些时间)或者可能找到另一个准备好的火车数据集。
  • 然后使用词袋(也称为嵌入)将字符串转换为数字向量。然后应用一些NN。我不认为 RNN 是最好的选择,但我不确定
于 2018-07-05T13:10:27.187 回答
0

我认为 RNN 在这里不是正确的工具,因为公司名称是短序列。可以先尝试一个更简单的模型。

段落向量(Word2vec 的广义形式)可用于生成公司名称的高维表示。

假设段落向量给出了一个 300 维的实值向量,那么模型的输入可以是一对公司名称(由 300+300 表示)dim 向量。输出应该是二进制的,其中 1 表示同一家公司,0 表示它们不同。

于 2017-09-08T09:59:02.850 回答