使用python将两个单词和类别列表与自己的语料库链接起来

时间:2013-01-25 11:30:07

标签: python list dictionary

好的,我一遍又一遍地思考它,但我只是python的初学者,我找不到任何解决方案。 这是我需要做的: 我有一个来自LIWC的文本文件,背后有各种荷兰语单词和数字:

aaien 12 13 32
aan 10
aanbad 12 13 14 57 58 38
...

然后我从LIWC获得了一个文本文件,后面有一个数字和一个类别:

01:Pronoun
02:I
03:We
04:Self
05:You
06:Other
...

现在我应该将我自己的语料库与这些类别的荷兰语单词联系起来。首先,我必须将我的荷兰语单词与LIWC单词列表中荷兰语单词后面的数字相关联,然后我将必须将这些数字与这些类别相关联...... 我认为从LIWC制作两个列表的字典会很有用。 这是我到目前为止所得到的:

with open('LIWC_words.txt', 'rU') as document:
    answer = {}
    for line in document:
        line = line.split()
        if not line:  #empty line
            continue
        answer[line[0]] = line[1:]

with open ('LIWC_categories.txt','rU') as document1:
    categoriesLIWC = {}
    for line in document1:
        line = line.strip()
        if not line:
            continue
        key, value = line.split(':')
        if key.isdigit():
            categoriesLIWC[int(key)] = value
        else:
            categoriesLIWC[key] = value

所以我现在有两本词典......但现在我被卡住了。有谁知道我接下来该做什么? (我使用python 2.6.5,因为我必须主要使用NLTK)

2 个答案:

答案 0 :(得分:0)

我不确定您要创建的最终格式。例如,您可以创建一个字典,其中dict['pronoun']包含document中包含'01'的所有行。

#for example from this format
dic = {'word1': [1,2,3], 'word2':[3,2]}
ref = {1: 'pronoun', 2: 'I' , 3: 'you'}

out = {}

for word in dic:
  for entry in dic[word]:
    if entry in out:
      out[entry].append(word)
    else:
      out[entry] = []
      out[entry].append(word)

print out
>>>{1: ['word1'], 2: ['word1', 'word2'], 3: ['word1', 'word2']}

或者,您可以将document中的数字替换为document1中的条目。

#for example from this format
dic = {'word1': [1,2,3], 'word2':[3,2]}
ref = {1: 'pronoun', 2: 'I' , 3: 'you'}

for word in dic:
  for indx in range(len(dic[word])): 
    dic[word][indx] = ref[dic[word][indx]]

print dic
>>>{'word1': ['pronoun', 'I', 'you'], 'word2': ['you', 'I']}

否则你想过一个数据库吗?

答案 1 :(得分:0)

这是将数据转换为该格式的一种方法。

dic = {}
ref = {}
tempdic = open('dic.txt','r').read().split('\n')
tempref = open('ref.txt','r').read().split('\n')

for line in tempdic:
  if line:
    line = line.split()
    dic[line[0]] = line[1:]
for line in tempref:
  if line:
    line = line.split(':')
    ref[line[0]] = line[1]
#dic = {'word1':[1,2,3], word2:[2,3]...}
#ref = {1:'ref1',2:'ref2',...}
for word in dic:
  for indx in range(len(dic[word])):#for each number after word
    dic[word][indx] = ref[dic[word][indx]]

让我们说我们从{'apple':[1,2,3]}开始。 dic['apple'][0]将解析为1,右侧将为ref[1],可能为'pronoun'。这将使我们留下{'apple' : ['pronoun', 2, 3],其余的数字将在下一次迭代时被替换。