【问题标题】:Appending key value in co-occurence在共现中附加键值
【发布时间】:2014-01-16 01:02:56
【问题描述】:

我有一个文本语料库:来自一个包含各种句子和段落的文件

这是我的代码:

import re
import nltk
from nltk.tokenize import RegexpTokenizer
import math
from collections import Counter
with open("descriptionsample.tsv", "r") as openfile:
frequency = Counter()
stopwords = nltk.corpus.stopwords.words('english')
tokenizer = RegexpTokenizer("[\w’]+", flags=re.UNICODE)
for line in openfile:
    words = line.lower().strip()
    words=re.sub(r'[0-9]|\~|\`|\@|\#|\$|\%|\^|\&|\*|\(|\)|\_|\+|\=|\{|\[|\}|\]|\\|\<|\,|\<|\.|\>|\?|\/|\;|\:', '',words).replace('-',' ')
    tokens = tokenizer.tokenize(words)
    tokens = [token for token in tokens if token not in stopwords]
    frequency.update(tokens)

我的结果是计数器格式

{'code':32344,'sql':2123,'chicago':1233...........} etc. 

但是假设按文档的第一行执行词频的结果是:

{'code':10,'sql':3,'python':2........}

我要做的是按文档从元组中创建一个共现矩阵(与二元组/三元组等相反),然后在最后收集总和。本质上是将每个键的计数附加到由 Key1,Key2:Key2 的值​​组成的新创建的元组中。其中 key2 甚至可以是 key1。

所以在计算 tsv 文件每一行的词频后,我希望逐行结果看起来像这样:

{('code','code'):10,('code','sql)':3,('code','python'):2,('sql,'code'):10,('sql','sql'):3,('sql','python'):2,('python','code'):10,('python','sql'):3,('python','python'):2}

我想不通。有什么帮助吗?也许我正在俯瞰其他一些可以自行完成的图书馆。

【问题讨论】:

    标签: python collections key append frequency


    【解决方案1】:

    一位同事帮我解决了这个问题。我最初尝试了一层又一层的嵌套字典,但遍历它将是一场噩梦。因此,这是解决我的问题的更简单和更有效的方法:

    doc2= {
    'a': 1,
    'b': 2,
    'c': 3,
    'd': 4,
    'e': 5
    }
    
    res = {}
    
    for key1 in doc2.keys():
        for key2 in doc2.keys():
            if key1 != key2:
                res[(key1, key2)] = doc2[key2]
    
    
    for key in res:
        print("[{}, {}] = {}".format(key[0], key[1], res[key]))
    

    结果:

    [b, c] = 3
    [d, a] = 1
    [b, a] = 1
    [d, c] = 3
    [e, d] = 4
    [c, d] = 4
    [d, e] = 5
    [c, e] = 5
    [e, c] = 3
    [c, a] = 1
    [a, d] = 4
    [e, b] = 2
    [a, e] = 5
    [d, b] = 2
    [c, b] = 2
    [a, b] = 2
    [e, a] = 1
    [b, e] = 5
    [a, c] = 3
    [b, d] = 4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多