首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本分类器从推特预测性别

文本分类器从推特预测性别
EN

Stack Overflow用户
提问于 2020-05-18 23:46:49
回答 1查看 844关注 0票数 0

我正在尝试建立一个文本分类器,根据推特用户的推文来预测他们的性别。这是我第一次建立一个文本分类模型,我不确定我的步骤。

2 Dataframes

我有一个作为训练数据集的数据框架。它包含每个用户ID及其性别。

代码语言:javascript
复制
train_lables=({'id':['33324','24442','3956'],
     'gender':['female','male','male']})
train_lables=pd.DataFrame(train_lables)

我还有一个作为培训和测试数据集的数据集。它包含用户的推文。

代码语言:javascript
复制
tweets=({'id':['33324','24442','3956'],
         'tweets':[['hello','trump','today'],['blue','eyes','brown','hair'],['playstation','june']]})
tweets=pd.DataFrame(tweets)

元组?

我想进行特征提取来训练我的模型。到目前为止,我已经使用每个数据帧中的每一行创建了元组,如下所示。

代码语言:javascript
复制
#gender for each user id 
training_labels_tuple=[tuple(x) for x in training_labels.to_records(index=False)]

输出是

代码语言:javascript
复制
[('33324', 'female'), ('24442', 'male'), ('3956', 'male')]

以及用户id和tweet的元组。

代码语言:javascript
复制
tweets_tuple=[tuple(x) for x in tweets.to_records(index=False)]

输出是

代码语言:javascript
复制
[('33324', ['hello', 'trump', 'today']),
 ('24442', ['blue', 'eyes', 'brown', 'hair']),
 ('3956', ['playstation', 'june'])]

我不确定我是否应该把推特和性别合并成一个元组,然后用它来训练我的模型。

有人能引导我通过正确的步骤来提取模型的特征吗?

EN

回答 1

Stack Overflow用户

发布于 2020-05-19 00:35:11

第六章 of nltk书有一个关于这个精确问题的很好的章节(使用性别识别例子的文本分类)。

在这个场景中,最常用的方法是将tweet作为一个字符串作为惟一的特性。下面是一个使用朴素贝叶斯分类器的示例:

代码语言:javascript
复制
import random

import nltk
import pandas as pd

# input data
df = pd.DataFrame({
    'id':['33324','24442','3956'],
    'gender':['female','male','male'],
    'tweets':[['hello','trump','today'],['blue','eyes','brown','hair'],['playstation','june']]
})

# featurize data to input into classifier
features = []
for tweet, gender in zip(df["tweets"], df["gender"]):
    features.append(({"feature": " ".join(tweet)}, gender))

# shuffle features
random.shuffle(features)    

# train test split, obvs use different split values for the real set or use sklearns train_test_split function
train_set, test_set = features[:2], features[2:]

# train
clf = nltk.NaiveBayesClassifier.train(train_set)

# test
print(nltk.classify.accuracy(clf, test_set))

这本nltk的书有更多的关于策略的信息,你可以用它来提取比我上面所做的更多的信息特性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61880843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档