keywords

package
v0.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2021 License: MIT Imports: 5 Imported by: 0

README

Ключевые слова

Пакет keywords позволяет задать ключевые слова/тэги для выбранных слов/фраз/шаблонов.

Файл данных

Данные хранятся в файле data.txt, который встраиваются в библиотеку при помощи go:embed, а загрузка производится на этапе инициализации пакета keywords.

Каждая строка данных имеет следующий формат:

word|phrase|template tag1 tag2 ... tagN

При этом для некоторых сущностей тэги могут отсутствовать.

В случае phrase/template/tags бывает потребность, чтобы внутри тега использовался пробел, для этого нужно заменить пробел на символ подчеркивания "_".

В качестве тэгов могут быть использованы специальные параметры $0, $1, $2, $3, $4 и их комбинаций например $0_$1. Это может быть полезно, если мы хотим определить шаблон например таким образом:

:mnames_:mlastnames $0_$1 $0 $1

Что эта строка означает? А означает она следующее, что если в тексте мы встречаем последовательность токенов, базовая форма первого из которых попадает в словарь :mnames (мужские имена), а базовая форма второго попадает в словарь :mlastnames (мужские фамилии), то на выходе мы получим три тэга: имя_фамилия, имя, фамилия.

Как мы видели, вхождение слова в словарь описывается следующей конструкцией ":" + "имя словаря".

В самых простых случаях фрагмент файла данных может выглядеть следующим образом:

как_сыр_в_масле
москва москва россия
красная_площадь красная_площадь москва россия

Это означает, что встретив в тексте красной площади, мы поставим ей в соответствие три тэга: красная площадь, москва и россия, если конечно для слов красная и площадь определены в пакете forms формы.

А встретив как сыр в масле, этой фразе мы ничего не поставим в соответствие и просто пропустим ее.

На данный момент существенным ограничением является тот факте, что фразы и шаблоны могут содержать не более чем 5 токенов.

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

API

Get
func Get(src string) ([]string, bool)

Функция возвращает массив тэгов, связанных с шаблоном/сущностью и флаг того, что шаблон определен. Нормальная практика, если для шаблона нет тэгов.

Is
func Is(src string) bool

Проверка определен ли переданный шаблон в базе данных ключевых сущностей.

Size
func Size() int

Получение числа ключевых слов/шаблонов в базе данных. Нужно для статистики.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Get

func Get(src string) ([]string, bool)

Get all keyword for source data

func Is

func Is(src string) bool

Is keyword check

func Size added in v0.0.5

func Size() int

Get total keywords and templates number

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL