Выявление важных слов и фраз в тексте - PullRequest
6 голосов
/ 06 октября 2011

У меня есть текст, хранящийся в строке Python.

Что я хочу

  1. Чтобы определить ключевые слова в этом тексте.
  2. для определения N-граммов в этом тексте (в идеале, больше, чем просто би и три грамма).

Имейте в виду ...

  • Текст может быть небольшим (например, размер твита)
  • Текст может быть средним (например, размер новостной статьи)
  • Текст может быть большим (например, размером с книгу или главу)

Что у меня есть

Я уже использую nltk , чтобы разбить корпус на токены и удалить стоп-слова:

    # split across any non-word character
    tokenizer = nltk.tokenize.RegexpTokenizer('[^\w\']+', gaps=True)

    # tokenize
    tokens = tokenizer.tokenize(text)

    # remove stopwords
    tokens = [w for w in tokens if not w in nltk.corpus.stopwords.words('english')]

Я знаю о BigramCollocationFinder и TrigramCollectionFinder, которые точно соответствуют тому, что я ищу для этих двух случаев.

Вопрос

Мне нужен совет для n-граммов более высокого порядка, улучшающий результаты, полученные от BCF и TCF, и совет о том, как лучше всего определить наиболее уникальные отдельные ключевые слова.

Большое спасибо!

1 Ответ

1 голос
/ 06 октября 2011

Что касается лучшего способа определения наиболее уникальных отдельных ключевых слов, то tfidf - это общая мера.Таким образом, вам нужно каким-то образом интегрировать поисковую систему (или создать простой пользовательский инвертированный индекс, который является динамическим и содержит термины частоты, частоты документа), чтобы эффективно и оперативно вычислять tfidf.

Что касается вашегоN-грамм, почему бы вам не создать собственный анализатор, используя подход «окна» (окно имеет длину N), который идентифицирует, скажем, наиболее частые из них?(просто сохраняйте каждый N-грамм в качестве ключа в словаре со значением частоты или оценки (на основе tfidf отдельных терминов))

...