【发布时间】:2013-05-29 12:29:46
【问题描述】:
本周早些时候,我发布了一个关于如何将文件中的特定单词更改为数字的问题。作为我情绪分析工作的一部分。不幸的是,这对我来说不是正确的方法,我错误地解释了我的数据。所以我会用正确的方法重新提问。
我有一个包含标记的特定单词列表,例如,我将使用 4 个单词,即使它是 40 个单词。我需要使用列表将推文转换为 0 1 1 0 类型的格式。
我的列表如下(一个文本文件,每行1个字):
- :)
- :(
- 开心
- 伤心
我的示例推文:
- TWEET1:我觉得 python 很酷,它让我很开心 :)
- TWEET2:今天是悲伤的一天 :(
输出应该是:
- TWEET1:1 0 1 0
- TWEET2:0 1 0 1
基本上每个数字都对应于令牌在列表中的位置。所以在 TWEET1 中,第一个“1”对应于列表中的位置一(即笑脸),第二个数字“0”对应于列表中的位置二(不开心的笑脸),因为在推文,它变成了“0”。第三个数字是“1”,对应于列表中的第三位(快乐),因为它在推文中被发现......它变成了“1”......我希望我解释一下出色地。
我使用 python 编写了很多脚本/程序来操作文件中的文本,所以我正在寻找一个 python 程序来为我做这件事。我对 python 很陌生,所以我希望有人能帮我写一个脚本来做到这一点。
我希望我解释得足够好,我自己花了一段时间才掌握这个概念。
感谢:)
更多信息:
- 由于我的单词列表大约有 40 个单词,因此每条推文的输出将至少为 40 位。例如。
0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0
编辑部分
下面给出的惊人答案不符合标准。它非常优雅地用数字替换单词。但不幸的是,这不是我需要的......
进一步的解释(它帮助我更好地理解它的方式).....
考虑一下:
TWEET1:“今天将是快乐的一天:)”
- 在读取该行之前,代码设置为'0 0 0 0'
- 然后它检查第一个'0'......这意味着:检查列表中的第一个标记(笑脸)......可以在推文的任何地方找到它吗?回答:是的。因此代码变为....'1 0 0 0'
- 接下来我们移动到第二个'0'(对应于不开心的脸)......我们可以在推文的任何地方找到不开心的脸吗?答案:不......因此第二个数字保持为“0”......我们的代码现在是“1 0 0 0”
- 接下来我们移动到第三个数字,它对应于单词“happy”。这个词可以在推文的任何地方找到吗?答案:是的......我们的代码现在变成了 '1 0 1 0'
- 现在我们移动到最后一位数字,对应于单词/标记“悲伤”......可以在推文的任何地方找到吗?答案:不......因此最后一个数字仍然是'0'
- 我们的最终代码变为 '1 0 1 0'
我希望这能更好地解释它:)
注意:代码对应于单词列表,而不是推文中的单词。
【问题讨论】:
-
提示:不要忘记考虑是否要让“今天大使收到缩微胶卷”这条推文返回
1,因为它包含“悲伤”。 -
不错的提示,它需要是一个唯一的词。我仍然很迷茫,我什至不知道从哪里开始,或者如何完成我的整个任务
-
@RHK-S8:您可能希望从标记推文开始,作为一个单独的函数。这意味着提取单独的单词。这可以简单或更复杂地完成,包括处理语法等。但这确实是一个单独的问题。
-
要查看不同标记化方法的示例,您可以look at
nltk.tokenize。您还可能会觉得 help.sentiment140.com 很有趣。