1
我有文本的语料库:含有各种句子和段落文件追加共同occurence键值
这里是我的代码:
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}
我无法弄清楚。任何帮助?也许我会忽略其他一些能自己做到这一点的图书馆。