使用python和邻近运算符在文本中查找相邻的两个单词。可原谅的解决方案

2024-09-26 22:50:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的初学者,我正在寻找以下问题的解决方案。在

我必须“扫描”文本寻找概念。在

一个概念是这样的:(电动3d汽车)

我必须寻找单词“car”的外观,其中在3个单词(“3d”)附近有另一个单词“electrical”(电气)(例如传统电动汽车、电动推进汽车、电动自动驾驶汽车等)

我知道你可以像处理一个单词和标点符号列表一样处理文本。在

我想到了以下解决方案:

with open(filepath) as fp:
    concept=['motor','3d','car']
    concept_appearences=0 ## counters
    concept_positions=[]
    concept_list=[]
    word1 = concept[0]
    word2 = concept[2]
    separator=concept[1]

    distance=[int(s) for s in separator if s.isdigit()]
    distance=int(distance[0])

    distanceright=distance
    if 'd' in separator: distanceleft=distance
    if 'w' in separator: distanceleft=0

    for line in fp:
      ## look for the concepts in every line which is like a paragraph

      for index,word in enumerate(line.split()):
           if word.upper()==word1.upper():
                ## i found the first concept-word
                for i in range(index-distanceleft,index+distanceright,1):
                if line.split()[i]==word2:
                    ##print('thline.split()[i],word2)
                    print('i found the concept in postion', i )
                    start,end=i,index
                    if index<i:start,end=index,i 
                         print('check:',line.split()[start:end+1])
                         concept_appearences +=1
                         concept_list.append(line.split()[start:end+1])
                         concept_positions.append(start)
  print('the concept appeared {} times'.format(concept_appearences))
  print('in positoins',concept_positions)
  print('list of concepts',concept_list)

这两个词之间的概念都还没有实现,这两个词之间还没有实现。(比如:废话电气。我阿姨的车。。。。这不应该是一个明显的原因)

也许不是超级Python的代码,但目前为止还可以。 这里的问题是。在

第一个: 在我看来这是一个相当普遍的问题。有专门的图书馆吗? 我甚至不知道这种东西的“技术”名称,除了“接近操作员” 注意:我读了很多关于NLTK(NL库)的文章,但没有找到解决方法。在

第二: 你知道如何使代码可伸缩吗?这意味着(电动3d汽车)本身可以成为一个概念内的概念,例如,当在“汽油”周围寻找(电动3d汽车)时,距离汽油不超过10个字: (电动3d汽车)10w汽油机)

第三: 如果这样的东西没有图书馆,任何关于速度的评论都是受欢迎的,我必须在100页的文本中寻找数千个概念。在

非常感谢。在

按照@Mathieu thx的要求重新编辑添加输入和输出文件。在

输入文本: 参考图。1到3,电动汽车1包括车身2、前后两对接地车轮3、4、电机5,通过适当的变速器(未示出)驱动前轮3和向电机5供电的蓄电池组6A、6B。适合汽车驾驶员操作的合适控制装置(未示出)用于控制电动机5的操作,从而控制汽车1的运动。在车库里发现的一辆旧电动汽车被漆成黄色而不是蓝色。在

输出: 这个概念出现了两次 位置[7,82] 列表[['electrical','car'],['electrical','driven','car']]


Tags: in文本概念forindexifline单词

热门问题