0

我有一个大约 5000 个独特单词/标记的列表,每个单词(笑脸算一个单词)都是每行。我试图产生一些适用于 python 的 SVM 的东西。

想象一下示例列表只有几个词

happy
sad
is
:(
i
the
day
am
today
:)

我的字符串是:

tweets =['i am happy today :)','is today the sad day :(']

然后每条推文的输出是:

5:1 8:1 1:1 9:1 10:1
3:1 9:1 6:1 2:1 4:1

注意这种格式 : ,这意味着冒号之前的第一个数字,应该使用它在 list 中的行号/位置来引用这个词。例如,':)' 是列表中的第十个单词(文本文件,每行 1 个标记)。

我正在考虑创建一个读取文本文件的函数,并将每一行(每个单词/标记)放入列表或字典中的一个位置,以便我可以从每条推文中读取一个单词并将其转换为基于的数字它在列表中的位置。

有谁知道如何在 python 中做到这一点?然后我在想这样的事情:

 for i in tweets:
         <translate-words-into-list-position>
4

2 回答 2

5
words = ['happy', 'sad', 'is', ':(', 'i', 'the', 'day', 'am', 'today', ':)']
d = {w: i for i, w in enumerate(words, start=1)}
tweets =['i am happy today :)','is today the sad day :(']
for tweet in tweets:
    print ' '.join(['{0}:1'.format(d[w]) for w in tweet.split() if w in d])


5:1 8:1 1:1 9:1 10:1
3:1 9:1 6:1 2:1 7:1 4:1

如果 words 是 afile你仍然可以在这个解决方案中使用它,只需记住.rstrip('\n')这一行。例如。

with open('words.txt', 'rU') as f:
    d = {w.rstrip('\n'): i for i, w in enumerate(f, start=1)}
于 2013-06-04T07:44:29.607 回答
0
>>> from itertools import count
>>> D = dict(zip(words, count(1)))
>>> tweets =['i am happy today :)','is today the sad day :(']
>>> [["{}:1".format(D[k]) for k in t.split() if k in D] for t in tweets]
[['5:1', '8:1', '1:1', '9:1', '10:1'], ['3:1', '9:1', '6:1', '2:1', '7:1', '4:1']]
于 2013-06-04T07:47:08.517 回答