文本中的多个单词一致性

时间:2017-10-17 10:26:30

标签: python python-3.x

我有一个单词文件,可以在文本中找到它们的一致性(最多3个位置左右)

单词文件:

  

     

时间

     

玻璃

     

     

红色

文字档案:

  

在网上销售杂货近十年之后,由于消费者已经表现出顽固地购买水果,蔬菜和肉类等物品的顽固冲动,亚马逊未能自行消磨。   您是否发现自己花在手机上的时间比通过盯着手机定期匆匆通过手机?   这个过程充满了焦虑,因为有许多不同的玻璃样式可供选择,并且观点与适当和必要的观点发生冲突

脚本:

def keywordsContext(file, fileName):
    #file: text file
    #fileName: words file

    with open(file, "r") as f, open(fileName, "r") as fi:

        corpus = f.read().split()
        pivot = fi.read().split()

        for keywords in pivot:
            if keywords in corpus:
                index = pivot.index(keywords)
                contexts = keywords+":", pivot[index-3:index], pivot[index+1:index+4]
                print(contexts)
            else:
                pass

输出:

  

('买:',[],['时间','玻璃','家'])

     

('time:',[],['glass','home','red'])

     

('glass:',[],['home','red'])

     

我想要的输出:

  

'买':顽固地购买水果等物品的冲动

     

'时间':你自己花更多时间在手机上

     

'glass':可提供多种不同的玻璃样式

修改

并且......如果同一个词出现不止一次?我做了一个测试(在语料库中又多了一个句子来重复“玻璃”这个词)。我尝试了一段时间len(语料库)!= 0但它是一个循环,以相同的输出重复......

def keywordsContext(file, fileName):

    with open(file, "r") as f, open(fileName, "r") as fi:

        corpus = f.read().split()
        pivot = fi.read().split()

        while len(corpus) != 0:

            for keywords in pivot:
                if keywords in corpus:
                    inde = corpus.index(keywords)
                    contexts = keywords+": "+ ' '.join(corpus[inde-3:inde+4])
                    print(contexts)

输出:

  买:顽固的冲动购买水果等物品,

     

时间:你自己花更多时间在手机上

     玻璃:可提供多种不同的玻璃样式,

     买:顽固的冲动购买水果等物品,

     

时间:你自己花更多时间在手机上

     玻璃:可提供多种不同的玻璃样式,

     买:顽固的冲动购买水果等物品,

     

时间:你自己花更多时间在手机上

     玻璃:可提供多种不同的玻璃样式,

     

...

3 个答案:

答案 0 :(得分:3)

def keywordsContext(file, fileName):
    #file: text file
    #fileName: words file
    with open(file, "r") as f, open(fileName, "r") as fi:

        corpus = f.read().split()
        pivot = fi.read().split()
        for keywords in pivot:
            if keywords in corpus:
                index = corpus.index(keywords)
                contexts = "'" + keywords + "' : " + " ".join(corpus[index - 3 : index + 4])
                print(contexts)
            else:
                pass

输出:

'buy' : stubborn urge to buy items like fruits,
'time' : yourself spending more time on your phone
'glass' : as many different glass styles are available,

答案 1 :(得分:2)

列表名称有些错误。试试吧:

def keywordsContext(file, fileName):
#file: text file
#fileName: words file

with open(file, "r") as f, open(fileName, "r") as fi:

    corpus = f.read().split()
    pivot = fi.read().split()
    for keywords in pivot:
        if keywords in corpus:
            lst_index = 0
            for i in range(0, corpus.count(keywords)):
                inde = corpus.index(keywords, lst_index)
                contexts = keywords+": "+ ' '.join(corpus[inde-3:inde+4])
                lst_index = inde+1
                print(contexts)
        else:
            pass

编辑:根据OP编辑,该程序打印所有出现的单词

答案 2 :(得分:1)

def keywordsContext(file, fileName):

    with open(file, "r") as f, open(fileName, "r") as fi:

        corpus = f.read().split()
        pivot = fi.read().split()
        for keywords in pivot:
            if keywords in corpus:
                index = corpus.index(keywords)
                contexts = keywords+":", corpus[index-3:index+4]
                print(contexts)
            else:
                pass

输出

('buy:', ['stubborn', 'urge', 'to', 'buy', 'items', 'like', 'fruits,'])
('time:', ['yourself', 'spending', 'more', 'time', 'on', 'your', 'phone'])
('glass:', ['as', 'many', 'different', 'glass', 'styles', 'are', 'available,'])