Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 文本挖掘代码中的时间复杂性问题_Python_Performance_Text Mining - Fatal编程技术网

Python 文本挖掘代码中的时间复杂性问题

Python 文本挖掘代码中的时间复杂性问题,python,performance,text-mining,Python,Performance,Text Mining,我有3000万篇帖子,600条查询,代表600个品牌。 例如,查询“哈利波特”或“哈利”代表哈利波特品牌, 该职位可以是: Yesterday I went to see harry potter. The movie was great! 我有一个类Post表示Post文本,还包括一些函数,用于处理在Post文本中查找术语(“Harry”,“Harry Potter”)的操作。 另一个类是Query,表示查询,并与Post通信 我运行了超过10万篇文章的代码,花了半个小时 class Pos

我有3000万篇帖子,600条查询,代表600个品牌。
例如,查询
“哈利波特”或“哈利”
代表哈利波特品牌,
该职位可以是:

Yesterday I went to see harry potter. The movie was great!
我有一个类
Post
表示Post文本,还包括一些函数,用于处理在Post文本中查找术语(
“Harry”
“Harry Potter”
)的操作。
另一个类是
Query
,表示查询,并与
Post
通信
我运行了超过10万篇文章的代码,花了半个小时

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

Post
如何提高效率

将目标单词的小写字母存储在
self.\u parsedSen
中,并使用
termArr=term.lower()。拆分(“”)
然后使用:

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

你会惊讶的

这个问题可能更适合?您想要ElasticSearch
返回全部(t in self.\u parsedSen for t in termArr)
有什么问题?你的
&=
不会短路。@Steve Barnes,据我所知,你的解决方案是
“哈利·波特”
,如果
Harry
Potter
出现在帖子中,不一定相邻,那么
Istermapper
将返回true。只有当
哈利波特
出现在旁边时,这才可以。
def isTermAppear(self, term):
    termArr = term.lower().split(' ')
    flag = True
    for t in termArr:
        flag &= t in self._parsedSen
    return flag