【问题标题】:Combining NLP (text) and numeric data to build a model结合 NLP(文本)和数值数据构建模型
【发布时间】:2019-10-15 14:29:21
【问题描述】:

我有一个具有以下特征的数据集

data = {
description:'the tea was amazing, had great taste.'
country:'Chile'
year: 1980
designation:'random'
points: 80
}

我正在寻找一种方法来使用这些功能来构建模型来预测点。

描述似乎包含很多关于点的信息。

我如何将这些数据输入模型以及哪个模型?

【问题讨论】:

  • 你到底在问什么?您为解决方案选择了哪种机器学习模型?你如何提供数据?
  • 这对于 SO 来说似乎有点太宽泛了
  • @shahaf 我在问选择哪个模型以及如何输入数据

标签: python machine-learning nlp regression data-science


【解决方案1】:

由于文本数据不能直接提供给模型,我建议您使用嵌入将描述转换为嵌入。如果在您的数据集中总体上存在唯一的名称值,您可以对名称进行热编码。对于国家/地区,您也可以对其进行热编码,或者也可以使用基于字符的嵌入来生成基于单词的嵌入。年份和积分不需要预处理。正如我可以通过您的问题假设的那样,您的问题是回归问题。您可以尝试 Sklearn 的梯度提升回归器或随机森林回归器或任何其他回归器来获取值。

def loadGloveModel(gloveFile):
    print("Loading Glove Model")
    f = open(gloveFile,'r')
    model = {}
    for line in f:
        splitLine = line.split()
        word = splitLine[0]
        embedding = np.array([float(val) for val in splitLine[1:]])
        model[word] = embedding
    print("Done.",len(model)," words loaded!")
    return model

你可以使用这个(这个文件可以从手套网站下载。)

model=loadGloveModel("glove.6B.300d.txt")
def averagewEmbeddings(line):

    line=str(line)
    average=model['x']
    length=0
    line=line.split(' ')
    for word in line:
        #for alphabet in word:
        length=length+1
        try:
            embed=model[word]
            average=average+embed
        except:
            average=average

    return ((average-model['x'])/length)
embeddings=[]
for index,sen in enumerate(data.description):
    embeddings.append(averagewEmbeddings(sen))

嵌入将包含您所有数据集的嵌入,您可以稍后将它们附加到您的数据框并删除描述列

【讨论】:

  • 谢谢!但是除了嵌入还有其他选择吗?嵌入运行时间过长
  • 如果描述中的文本是唯一的,您可以对其进行热编码,但如果它们不是唯一的,则它们很可能不是唯一的并且可以更改,除了嵌入之外没有其他解决方案。跨度>
猜你喜欢
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
  • 1970-01-01
相关资源
最近更新 更多