结合NLP(文本)和数字数据以构建模型

时间:2019-10-15 14:29:21

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

我有一个具有以下功能的数据集

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

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

描述似乎包含有关点的大量信息。

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

1 个答案:

答案 0 :(得分: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

您可以将其用作(此文件可以从Gloves网站下载。)

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))

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