Я пытаюсь создать вектор, который представляет совпадение строки и элементов списка.Я сделал функцию в python3.x:
def vector_build (docs, var):
vector = []
features = docs.split(' ')
for ngram in var:
if ngram in features:
vector.append(docs.count(ngram))
else:
vector.append(0)
return vector
Работает нормально:
vector_build ('hi my name is peter',['hi', 'name', 'are', 'is'])
Out: [1, 1, 0, 1]
Но эта функция не масштабируется до значимых данных.Когда его строковый параметр 'docs' тяжелее 190 КБ, это занимает больше времени.Поэтому я пытаюсь заменить цикл for функцией map, например:
var = ['hi', 'name', 'are', 'is']
doc = 'hi my name is peter'
features = doc.split(' ')
vector = list(map(var,if ngram in var in features: vector.append(doc.count(ngram))))
Но это возвращает эту ошибку:
SyntaxError: неверный синтаксис
Есть ли способ заменить цикл for на map, lambda, itertools, чтобы ускорить выполнение?