def boolean_search_and(self, text):</p>
<pre><code> results = []
and_tokens = self.tokenize(text)
tokencount = len(and_tokens)
term1 = and_tokens[0]
print ' term 1:', term1
term2 = and_tokens[1]
print ' term 2:', term2
#for term in and_tokens:
if term1 in self._inverted_index.keys():
resultlist1 = self._inverted_index[term1]
print resultlist1
if term2 in self._inverted_index.keys():
resultlist2 = self._inverted_index[term2]
print resultlist2
#intersection of two sets casted into a list
results = list(set(resultlist1) & set(resultlist2))
print 'results:', results
return str(results)
Этот код прекрасно работает для двух токенов, например: text = "Hello World" и так, tokens = ['hello', 'world']. Я хочу обобщить его для нескольких токенов, чтобы текст мог быть предложением или целым текстовым файлом.
self._inverted_index - это словарь, который сохраняет токены в качестве ключей, а значения - это DocID, в которых встречаются ключи / токены.
привет -> [1,2,5,6]
мир -> [1,3,5,7,8]
результат:
привет и мир -> [1,5]
Я хочу добиться результата для:
сказать,
(((привет И компьютер) И наука) И мир)
Я работаю над созданием этой работы для нескольких слов, а не только для двух. Я начал работать в Python этим утром, так что я не знаю многих функций, которые он может предложить.
Есть идеи?