我有一个文本文件,每行包含推文,需要针对机器学习格式进行更改。我使用 python 和基本的 unix 文本操作 (regex) 来实现我的很多字符串操作,并且我开始使用 sed、grep 和 pythons .re 函数....然而,下一个问题对我来说是令人兴奋的,并且想知道是否任何人都可以帮助我。我尝试了一些谷歌搜索,但没有运气 :(
我总是从伪代码开始,这样对我来说更容易,这就是我想要的...... "将 -token1- OR -token2- OR -token3- OR -token4- 替换为整数 '1',将所有other 单词/标记替换为整数 '0' "
假设我的需要变为“1”的单词/标记列表如下:
- :)
- 酷
- 快乐
- 有趣
我的推文是这样的:
- 这是有趣的一天 :)
- 我觉得 python 很酷!这让我很开心
新程序/函数的输出将是:
- 0 0 0 0 1 0 1
- 0 0 0 1 0 0 0 1
注意 1:请注意“cool”有一个“!”在它后面,它也应该包括在内,尽管我总是可以先删除文件中的所有标点符号,以使其更容易
注意2:所有推文都将小写,我已经有一个将所有行更改为小写的函数
有谁知道如何使用 unix 正则表达式(例如 sed、grep、awk)或什至如何在 python 中执行此操作?顺便说一句,这不是家庭作业,我正在研究一个情绪分析程序,并且正在做一些实验。
谢谢! :)
最佳答案
from string import punctuation as pnc
tokens = {':)', 'cool', 'happy', 'fun'}
tweets = ['this has been a fun day :)', 'i find python cool! it makes me happy']
for tweet in tweets:
s = [(word in tokens or word.strip(pnc) in tokens) for word in tweet.split()]
print(' '.join('1' if t else '0' for t in s))
输出:
0 0 0 0 1 0 1
0 0 0 1 0 0 0 1
第 4 行的 or
用于处理 :)
,正如@EOL 所建议的。
还有一些情况不会被正确处理,比如用cool :), I like it
。问题是需求固有的。
关于python - 使用特定单词列表将单词更改为数字的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16755598/