【发布时间】:2020-11-11 10:38:22
【问题描述】:
我有一个由许多行组成的数据框,其中包括推文。我想使用机器学习技术(监督或无监督)对它们进行分类。 由于数据集未标记,我想选择几行(50%)手动标记(+1 pos,-1 neg,0 中性),然后使用机器学习将标签分配给其他行。 为了做到这一点,我做了如下:
原始数据集
Date ID Tweet
01/20/2020 4141 The cat is on the table
01/20/2020 4142 The sky is blue
01/20/2020 53 What a wonderful day
...
05/12/2020 532 In this extraordinary circumstance we are together
05/13/2020 12 It was a very bad decision
05/22/2020 565 I know you are the best
-
将数据集分成 50% 的训练和 50% 的测试。我手动标记了 50% 的数据如下:
Date ID Tweet PosNegNeu 01/20/2020 4141 The cat is on the table 0 01/20/2020 4142 The weather is bad today -1 01/20/2020 53 What a wonderful day 1 ... 05/12/2020 532 In this extraordinary circumstance we are together 1 05/13/2020 12 It was a very bad decision -1 05/22/2020 565 I know you are the best 1
然后我提取词的频率(去除停用词后):
Frequency
bad 2
circumstance 1
best 1
day 1
today 1
wonderful 1
....
我想尝试为其他数据分配标签:
- 频率表中的单词,例如说“如果一条推文包含例如比assign -1差;如果一条推文包含精彩的assign 1(即我应该创建一个字符串列表和一条规则);
- 基于句子相似度(例如使用 Levenshtein 距离)。
我知道有几种方法可以做到这一点,甚至更好,但我在为我的数据分类/分配标签时遇到了一些问题,我无法手动完成。
我的预期输出,例如使用以下测试数据集
Date ID Tweet
06/12/2020 43 My cat 'Sylvester' is on the table
07/02/2020 75 Laura's pen is black
07/02/2020 763 It is such a wonderful day
...
11/06/2020 1415 No matter what you need to do
05/15/2020 64 I disagree with you: I think it is a very bad decision
12/27/2020 565 I know you can improve
应该是这样的
Date ID Tweet PosNegNeu
06/12/2020 43 My cat 'Sylvester' is on the table 0
07/02/2020 75 Laura's pen is black 0
07/02/2020 763 It is such a wonderful day 1
...
11/06/2020 1415 No matter what you need to do 0
05/15/2020 64 I disagree with you: I think it is a very bad decision -1
12/27/2020 565 I know you can improve 0
可能更好的方法应该是考虑 n-gram 而不是单个单词或构建语料库/词汇表来分配分数,然后是情绪。任何建议将不胜感激,因为这是我关于机器学习的第一次练习。我认为也可以应用 k-means 聚类,试图获得更多相似的句子。 如果你能给我一个完整的例子(我的数据很好,但其他数据也很好),我将不胜感激。
【问题讨论】:
-
我建议您使用自己的标记数据微调预训练模型,然后使用该模型预测其余推文的类别。
-
@luca-di-mauro 温和提醒您获得赏金。看起来你忘记分配赏金了。我以前的用户名是villisSO。上周我把它改成了特立独行的。我认为这不应该成为在我回答你的问题时奖励我赏金的威慑。
-
非常感谢您留下我。我以为我已经分配了!非常感谢你特立独行!
标签: python pandas machine-learning sentiment-analysis