我正在尝试编写代码来查找特定短语两侧的5个单词.很容易,但我必须在大量数据上执行此操作,因此代码需要是最佳的!
for file in listing:
file2 = open('//home/user/Documents/Corpus/Files/'+file,'r')
for line in file2:
linetrigrams = trigram_split(line)
for trigram in linetrigrams:
if trigram in trigrams:
line2 = line.replace(trigram,'###').split('###')
window = (line2[0].split()[-5:] + line2[1].split()[:5])
for item in window:
if item in mostfreq:
matrix[trigram][mostfreq[item]] += 1
有什么建议可以更快地做到这一点?可能是我在这里使用完全错误的数据结构. trigram_split()只给出行中的所有三元组(这是我需要为其创建向量的单位). “Trigrams”基本上是一个大约一百万个三元组的列表,我关注的是创建向量. Window获取trigram之前和之后的5个单词(如果该trigram在列表中),然后检查它们是否在列表MostFreq(这是一个1000字的字典作为键,每个对应一个整数[ 0-100]作为储值).然后,这用于更新Matrix(这是一个带有列表([0] * 1000)作为存储值的字典).伪矩阵中的对应值以这种方式递增.
最佳答案 在权衡各种方法时要考虑的几个重要因素:
>多线与单线