0

我有 3000 万个帖子和代表 600 个品牌的 600 个查询。
例如,查询"Harry Potter" OR "Harry"代表品牌 Harry Potter,
帖子可以是:

Yesterday I went to see harry potter. The movie was great!

我有代表帖子文本的类,还包括处理在帖子文本中查找术语 ( , )Post的操作的函数。 另一个类是,代表查询,并与 通信。 我运行了超过 100K 个帖子的代码,花了半个小时。"Harry""Harry Potter"
QueryPost

class Post:

    def __init__(self, post):
        self._postString = post
        self._postString = re.sub(r'\s{2,}', ' ', self._postString)
        self._parsedSen = self._postString.split(' ')
        self._length = len(self._parsedSen)


    def isTermAppear(self, term):
        k = None
        termArr = term.split(' ')
        for i in range(self._length):
            if i + len(termArr) <= len(self._parsedSen):
                k = i
                flag = True
                for j in range(len(termArr)):
                    if not self._parsedSen[k].lower().find(termArr[j].lower()) >= 0:
                        flag = False
                    k += 1
                if flag:
                    return True
        return False

然后我将函数更改为微不足道,并再次运行代码。这次花了3分钟。

def isTermAppear(self, term):
    return False

怎样才能Post更有效率?

4

1 回答 1

1

存储目标词的小写字母self._parsedSen并使用,termArr = term.lower().split(' ')然后使用:

def isTermAppear(self, term):
    termArr = term.lower().split(' ')
    flag = True
    for t in termArr:
        flag &= t in self._parsedSen
    return flag

你会感到惊讶。

于 2013-09-28T16:46:01.593 回答