Как уже говорилось в комментариях, поскольку вы хотите узнать, какие слова присутствуют в документе, или нет, вам потребуется немного изменить словарный запас (listOfStrings
).
sentences = [ "The only cool Washington is DC",
"A cool city in Washington is Seattle",
"Moses Lake is the dirtiest water in Washington" ]
from sklearn.feature_extraction.text import CountVectorizer
listOfStrings = ["washington", "dc", "seattle", "cool"]
vectorizer = CountVectorizer(vocabulary=listOfStrings,
binary=True)
bagowords = vectorizer.fit_transform(sentences).toarray()
vectorizer.vocabulary
['washington', 'dc', 'seattle', 'cool']
bagowords
array([[1, 1, 0, 1],
[1, 0, 1, 1],
[1, 0, 0, 0]])
Я добавил binary=True
в CountVectorizer, так как вы не хотите, чтобы фактические значения, только проверьте, присутствует ли слово.
Вывод bagowords
соответствует порядку словарного запаса (listOfStrings
) выв комплект поставки.Таким образом, первый столбец показывает, присутствует ли «washinton» в документах или нет, второй столбец проверяет наличие «dc» и т. Д.
Конечно, вам нужно будет обратить внимание на другие параметры в CountVectorizer, которые могут повлиять на это.,Например:
lowercase
по умолчанию True
, поэтому я использовал строчные слова в listOfStrings
.В противном случае «DC», «Dc», «dc» рассматриваются как отдельные слова. - Вам также следует изучить эффект параметра
token_pattern
, который по умолчанию сохраняет только буквенно-цифровые строки длиной 2 или более.Поэтому, если вы хотите обнаружить слова из одной буквы, такие как «а», «я» и т. Д., Вам нужно это изменить.
Надеюсь, это поможет.Если ничего не понимаю, не стесняйтесь спрашивать.