Для пользовательских документов вы можете использовать подход Count Vectorizer.
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer() #make object of Count Vectorizer
corpus = [
'This is a cat.',
'It likes to roam in the garden',
'It is black in color',
'The cat does not like the dog.',
]
X = vectorizer.fit_transform(corpus)
#print(X) to see count given to words
vectorizer.get_feature_names() == (
['cat', 'color', 'roam', 'The', 'garden',
'dog', 'black', 'like', 'does', 'not',
'the', 'in', 'likes'])
X.toarray()
#used to convert X into numpy array
vectorizer.transform(['A new cat.']).toarray()
# Checking it for a new document
Также можно использовать другие векторизаторы, такие как Tfidf Vectorizer. Векторизатор tfidf - лучший подход, поскольку он не только показывает количество вхождений слов в конкретный документ, но также сообщает о важности слова.
Он рассчитывается путем нахождения частоты TF-термина и IDF-частоты обратного документа.
Term Freq - это количество раз, когда слово появлялось в конкретном документе, и IDF рассчитывается на основе контекста документа. Например, если документы связаны с футболом, то слово «the» не даст никакого понимания, а слово «messi» расскажет о контексте документа. Он рассчитывается путем регистрации количества повторов. Например. tf ("the") = 10 tf ("messi") = 5
idf("the") = log(10) = 0
idf("messi") = log(5) = 0.52
tfidf("the") = tf("the") * idf("the") = 10 * 0 = 0
tfidf("messi") = 5 * 0.52 = 2.6
Эти веса помогают алгоритму идентифицировать важные слова из документов, что впоследствии помогает получить семантику из документа.
person
Deepshikha Sethi
schedule
26.09.2018