程序无法识别单词python的多次出现(在Linux上)

时间:2019-04-23 01:42:33

标签: python markov-chains

我正在通过从示例文本创建有向图(其中单词是节点,并且单词与紧随其后的任何单词之间存在有向边)来构建论文生成器。我正在通过字典形成节点,但是该程序似乎没有读取第一个单词之后的单词。

tH = {}
with open('ex','r') as f:
  for line in f:
    valHold = [w.lower() for w in line.split()]
for x in valHold:
  if x not in tH:
    tH[x] = []
    if x != valHold[-1] and valHold[valHold.index(x) + 1] not in tH[x]:
     tH[x].append(valHold[valHold.index(x) + 1])
print(tH)

我希望输出是

{'the' : ['sun', 'moon'], 'sun' : ['the'], 'moon' : []}

文件“ ex”包含字符串时

'the sun the moon'

但是输出是

{'the' : ['sun'], 'sun' : ['the'] 'moon' : []}

1 个答案:

答案 0 :(得分:0)

代替for x in valHold:遍历valHold中的每个单词,您需要遍历第二个单词,即x = valHold [0](store valHold [1]),x = valHold [2](存储valHold [3]),依此类推。 您可以这样做:

for i in range(0, len(valHold), 2):
    x = valHold[i]
    if x not in tH:
        tH[x] = []
    if x != valHold[-1] and valHold[i + 1] not in tH[x]:
        tH[x].append(valHold[i + 1])