使用朴素贝叶斯分类识别Twitter用户性别

我在学校参与了一个项目,这个项目到目前为止非常有趣,而且现在变得更加有趣。我手头有大约60万条推文(每条推文包含屏幕名称、地理位置、文本等),我的目标是尝试将每个用户分类为男性或女性。现在使用Twitter4J,我可以获取用户的全名、朋友数量、转发数量等。所以我想知道是否可以结合查看用户的姓名和进行文本分析来找到答案。我最初的想法是可以将其做成一个基于规则的分类器,首先查看用户的姓名,然后分析他们的文本,并尝试得出M或F的结论。我猜想使用像朴素贝叶斯这样的方法会遇到麻烦,因为我没有真实的真值?

另外,对于姓名,我会检查某种字典来解释姓名是男性还是女性。我知道有些情况下很难判断,这就是为什么我也会查看他们的推文文本。我还忘了提及;对于这60万条推文,我至少有每个用户的两条推文可用。

关于用户性别分类的任何想法或意见将不胜感激!我在这方面没有太多经验,我希望能学到任何我能接触到的东西。


回答:

我猜想使用像朴素贝叶斯这样的方法会遇到麻烦,因为我没有真实的真值?

任何监督学习算法,如朴素贝叶斯,都需要准备训练集。如果没有一些数据的实际性别,你就无法构建这样的模型。另一方面,如果你提出了一些基于规则的系统(比如基于用户姓名),你可以尝试半监督方法。使用你的基于规则的系统,你可以对数据进行某种标记,假设你的基于规则的分类器是RC,可以回答“男性”、“女性”、“不知道”,你可以使用RC以自然的方式对数据X进行标记:

X_m = { x in X : RC(x)="Male" }X_f = { x in X : RC(x)="Female" }

一旦你完成了,你可以使用所有数据创建一个监督学习模型的训练集,除了用于创建RC的数据 – 在这种情况下 – 用户姓名(我假设,RC回答“男性”或“女性”仅当它完全“确定”时)。结果,你将训练一个分类器,它将尝试从所有额外数据(如使用的词语、位置等)中概括性别概念。让我们称之为SC。之后,你可以简单地创建一个“复杂”分类器:

C(x) = "Male" iff RC(x)= Male" or                   (RC(x)="Do not know" && SC(x)="Male")       "Female" iff RC(x)= Female" or                     (RC(x)="Do not know" && SC(x)="Female")

这样,你一方面可以以基于规则的方式使用最有价值的信息(用户姓名),同时在没有“真实情况”的情况下利用监督学习的力量来处理“难题”。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注