将文本块与多行匹配

时间:2013-08-06 17:20:39

标签: python django full-text-search

-->

尝试构建一种扫描大块文本的方法,以便在Django中找到匹配的各行。

让我说我有这样的文字:

  

我的朋友乔博格斯和彼得史密斯正在建造沙堡   他们的朋友Jane Doe和他们的狗Benjamin

我想扫描该文本并将名称与我正在存储的一组“人”数据相匹配。 这是我的模特:

class Artist(models.Model):
    name = models.CharField(max_length=255)
    slug = models.SlugField(max_length=100)
    biog = models.CharField(max_length=255)

我想将该组文本与此数据中的项目进行比较。

需要匹配:

Joe Bloggs

彼得史密斯

Jane Doe

本杰明

(名称可以是1-5个单词的长度 - 尽管它们都存储在同一行中)

我该怎么做?我需要该函数来返回它在文本中找到的人员ID列表。

尝试过各种各样的事情,例如在每次休息时拆分单词,进行部分匹配,然后看看下面的单词是否相同并且继续,但我所做的一切都感觉笨拙而没有按预期工作

由于

1 个答案:

答案 0 :(得分:1)

假设您的艺术家是包含其ID和全名的元组列表(如果您有其他结构的艺术家,则可以轻松转换它)。

artists = [ (1, 'Joe Bloggs'), (2, 'Peter Smith'), (3, 'Jane Doe'), (4, 'Benjamin') ]
t = 'Joe Bloggs\'s dog is called Benjamin. Peter Fuller and John Doe are two unkown persons.'

def findArtists (artists, text):
    return [aid for aid, name in artists if name in text]

print (findArtists (artists, t) )
相关问题
最新问题