1

我已经成为学校里一个项目的一部分,到目前为止这个项目很有趣,而且变得更有趣了。我拥有大约 600,000 条推文(每条都包含网名、地理位置、文本等),我的目标是尝试将每个用户分类为男性或女性。现在使用 Twitter4J,我可以得到用户的全名、朋友数量、转发推文等。所以我想知道结合查看用户名和进行文本分析是否是一个可能的答案。我原本以为我可以把它做成一个基于规则的分类器,我可以先查看用户的姓名,然后分析他们的文本并尝试得出 M 或 F 的结论。我猜我在使用诸如此类的东西时会遇到麻烦天真的贝叶斯,因为我没有真正的真值?

还有名字,我会检查某种字典来解释这个名字是男性还是女性。我知道有些情况很难说,但这就是为什么我也会查看他们的推文文本。我也忘了提;有了这 600,000 条推文,我每个用户至少有两条推文可供我使用。

任何关于分类用户性别的想法或输入将不胜感激!我在这方面没有大量经验,我希望学习任何我能掌握的东西。

4

2 回答 2

2

我猜我在使用诸如朴素贝叶斯之类的东西时会遇到麻烦,因为我没有真正的真值?

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

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

这样,您一方面可以以基于规则的方式使用最有价值的信息(用户名),同时利用监督学习的力量来处理“困难案例”,而不是首先获得“基本事实” .

于 2013-08-17T19:13:37.647 回答
1
  • 您需要开发一个连接姓名和性别的词汇表。
  • 然后你必须为每条推文定义特征。
  • 最后,您可以使用 weka (java)、Matlab、Python 来构建学习集。

主要问题:

  1. 你的语言?从名字中识别性别在意大利语中很容易(-a 女性,-o 男性 [除了 Andrea,Luca] )或者在这里看看有没有人知道一个很好的库来将一个人的名字映射到他或她的性别?
  2. 第二个问题有点复杂,你需要一个语义词典,或者你只分析推文的目的地(#to)或 url 或图像的存在
于 2013-08-17T19:31:34.133 回答