使用特定单词列表将单词更改为数字的最佳方法

RHK*_*-S8 2 python regex awk sed

我有一个文本文件,每行包含推文,需要针对机器学习格式进行更改.我使用python和基本的unix文本操作(正则表达式)实现了很多我的字符串操作,并且我开始使用sed,grep和pythons .re函数....这个下一个问题然而对我来说是心灵冒犯,并且想知道是否任何人都可以帮助我.我尝试了一些谷歌搜索,但没有运气:(

我总是从伪代码开始,使我更容易,这就是我想要的......" 替换-token1-或-token2-或-token3-或-token4-与整数'1',替换所有其他单词/代币整数'0' "

让我说我需要成为'1'的单词/代币列表如下:

  • :)
  • 快乐
  • 开玩笑

我的推文看起来像这样:

  • 这是一个有趣的一天:)
  • 我发现python很酷!这让我高兴

新程序/功能的输出将是:

  • 0 0 0 0 1 0 1
  • 0 0 0 1 0 0 0 1

注1:注意'酷'有'!' 在它背后,它也应该被包括在内,虽然我总是可以首先删除文件中的所有标点符号,以使其更容易

注2:所有推文都是小写的,我已经有了一个将所有行改为小写的函数

有没有人知道如何使用unix正则表达式(如sed,grep,awk)甚至如何在python中执行此操作?顺便说一句,这不是家庭作业,我正在研究情绪分析程序,我正在尝试一下.

感谢名单!:)

Ela*_*zar 8

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))
Run Code Online (Sandbox Code Playgroud)

输出:

0 0 0 0 1 0 1
0 0 0 1 0 0 0 1
Run Code Online (Sandbox Code Playgroud)

or在4号线有没有处理:),由@EOL的建议.

仍然存在无法正确处理的情况,例如cool :), I like it.问题是要求所固有的.

  • `print("".join("1"如果在令牌中的单词,则为"0",用于tweet.split()中的单词)) (2认同)