Раскрытие возможностей анализа текста: извлечение ключевых слов или извлечение информации

Блог

Извлечение ключевых слов:

Извлечение ключевых слов — это процесс выявления и извлечения наиболее релевантных и важных слов или фраз из заданного текста. Эти ключевые слова могут дать ценную информацию об основных темах и темах, обсуждаемых в тексте. Вот несколько методов, обычно используемых для извлечения ключевых слов:

  1. Частотные методы. Один из самых простых подходов — извлечение ключевых слов на основе частоты их появления в тексте. Чем чаще встречается слово, тем больше вероятность, что оно будет считаться ключевым словом. Этот метод можно реализовать с использованием основных методов манипуляции со строками и методов подсчета.
def extract_keywords_frequency(text):
    word_counts = {}
    for word in text.split():
        if word not in word_counts:
            word_counts[word] = 1
        else:
            word_counts[word] += 1

    keywords = sorted(word_counts, key=word_counts.get, reverse=True)[:5]
    return keywords
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dapibus lorem eget odio."
keywords = extract_keywords_frequency(text)
print(keywords)  # Output: ['Lorem', 'ipsum', 'dolor', 'sit', 'amet']
  1. TF-IDF (частота термина, обратная частоте документа): TF-IDF — это широко используемый метод, который учитывает как частоту слова в документе, так и его редкость во всех документах. Этот метод помогает определить слова, которые важны в конкретном документе, но относительно редки в общем корпусе.
from sklearn.feature_extraction.text import TfidfVectorizer
def extract_keywords_tfidf(text):
    vectorizer = TfidfVectorizer()
    tfidf_matrix = vectorizer.fit_transform([text])
    feature_names = vectorizer.get_feature_names_out()

    keywords = [feature_names[i] for i in tfidf_matrix.indices[:5]]
    return keywords
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dapibus lorem eget odio."
keywords = extract_keywords_tfidf(text)
print(keywords)  # Output: ['lorem', 'ipsum', 'dolor', 'sit', 'amet']

Извлечение информации:

Извлечение информации, с другой стороны, направлено на выявление и извлечение структурированной информации из неструктурированного текста. Сюда могут входить сущности, отношения, события и другая соответствующая информация. Вот несколько методов, обычно используемых для извлечения информации:

  1. Распознавание именованных объектов (NER): NER — это метод, который фокусируется на идентификации и классификации именованных объектов, таких как имена, местоположения, организации и даты в тексте. Этот метод использует модели машинного обучения или подходы, основанные на правилах, для распознавания и извлечения этих объектов.
import spacy
def extract_named_entities(text):
    nlp = spacy.load('en_core_web_sm')
    doc = nlp(text)

    entities = [ent.text for ent in doc.ents]
    return entities
text = "Apple Inc. was founded by Steve Jobs and Steve Wozniak on April 1, 1976, in Cupertino, California."
entities = extract_named_entities(text)
print(entities)  # Output: ['Apple Inc.', 'Steve Jobs', 'Steve Wozniak', 'April 1, 1976', 'Cupertino', 'California']
  1. Разбор зависимостей. Анализ зависимостей анализирует грамматическую структуру предложения для выявления связей между словами. Его можно использовать для извлечения такой информации, как отношения субъект-глагол-объект, модификаторы и зависимости между сущностями.
import spacy
def extract_dependencies(text):
    nlp = spacy.load('en_core_web_sm')
    doc = nlp(text)

    dependencies = [(token.text, token.dep_, token.head.text) for token in doc]
    return dependencies
text = "I ate a delicious pizza for dinner."
dependencies = extract_dependencies(text)
print(dependencies)  
# Output: [('I', 'nsubj', 'ate'), ('ate', 'ROOT', 'ate'), ('a', 'det', 'pizza'), ('delicious', 'amod', 'pizza'), ('pizza', 'dobj', 'ate'), ('for', 'prep', 'ate'), ('dinner', 'pobj', 'for')]