Реализация TensorFlow модели Bilstm+CRF, для задач маркировки последовательности.
Sequential labeling является одним из типичных методологических моделирования задач прогнозирования последовательности в NLP. Общие задачи по маркировке включают, например,
Пример в качестве примера: пример:
Stanford University located at California .
B-ORG I-ORG O O B-LOC O Здесь должны быть извлечены две организации, Stanford University и California . И, в частности, каждый token в тексте помечен соответствующей label . Например, { token : Стэнфорд , label : B-Org }. Модель маркировки последовательности направлена на предсказание последовательности метки, с учетом последовательности токена.
BiLSTM+CRF предложенный Lample et al., 2016, до сих пор является наиболее классической и стабильной нейронной моделью для последовательных задач маркировки. 
Настройка всех настроек
train / test / interactive_predict / api_service ]BIO / BIESO ]PER | LOC | ORG ]регистрировать все
Демонстрация веб -приложения для легкой демонстрации
ОБЪЕКТИРОВАНИЕ: BILSTM_CRF, наборы данных, Configer, Utils
Модулизованный с чистой структурой, легко для DIY.
Смотрите больше в справочнике.
Загрузите репо для непосредственного использования.
git clone https://github.com/scofield7419/sequence-labeling-BiLSTM-CRF.git
pip install -r requirements.txt
Установите пакет Bilstm-CRF в качестве модуля.
pip install BiLSTM-CRF
Использование:
from BiLSTM-CRF.engines.BiLSTM_CRFs import BiLSTM_CRFs as BC
from BiLSTM-CRF.engines.DataManager import DataManager
from BiLSTM-CRF.engines.Configer import Configer
from BiLSTM-CRF.engines.utils import get_logger
...
config_file = r'/home/projects/system.config'
configs = Configer(config_file)
logger = get_logger(configs.log_dir)
configs.show_data_summary(logger) # optional
dataManager = DataManager(configs, logger)
model = BC(configs, logger, dataManager)
###### mode == 'train':
model.train()
###### mode == 'test':
model.test()
###### mode == 'single predicting':
sentence_tokens, entities, entities_type, entities_index = model.predict_single(sentence)
if configs.label_level == 1:
print("nExtracted entities:n %snn" % ("n".join(entities)))
elif configs.label_level == 2:
print("nExtracted entities:n %snn" % ("n".join([a + "t(%s)" % b for a, b in zip(entities, entities_type)])))
###### mode == 'api service webapp':
cmd_new = r'cd demo_webapp; python manage.py runserver %s:%s' % (configs.ip, configs.port)
res = os.system(cmd_new)
open `ip:port` in your browser.
├── main.py
├── system.config
├── HandBook.md
├── README.md
│
├── checkpoints
│ ├── BILSTM-CRFs-datasets1
│ │ ├── checkpoint
│ │ └── ...
│ └── ...
├── data
│ ├── example_datasets1
│ │ ├── logs
│ │ ├── vocabs
│ │ ├── test.csv
│ │ ├── train.csv
│ │ └── dev.csv
│ └── ...
├── demo_webapp
│ ├── demo_webapp
│ ├── interface
│ └── manage.py
├── engines
│ ├── BiLSTM_CRFs.py
│ ├── Configer.py
│ ├── DataManager.py
│ └── utils.py
└── tools
├── calcu_measure_testout.py
└── statis.py
Складки
engines складывается, предоставляя основную функционирующую PY.data-subfold данных размещены.checkpoints-subfold хранятся контрольные точки модели.demo_webapp мы можем продемонстрировать систему в Интернете и предоставлять API.tools складывается, предоставляя несколько автономных UTIL.Файлы
main.py - это файл Python ввода для системы.system.config - это файл Configure для всех настроек системы.HandBook.md предоставляет некоторые инструкции по использованию.BiLSTM_CRFs.py является основной моделью.Configer.py Parss The system.config .DataManager.py управляет наборами данных и планированием.utils.py предоставляет на Fly Tools. Под следующими шагами:
system.config .
main.py 
main.py main.py
main.py

Наборы данных, включая Trainset, TestSet, DevSet, необходимы для общего использования. Тем не менее, вы только хотите обучить модель использовать ее в автономном режиме, необходимо только поезда. После обучения вы можете сделать вывод с сохраненными файлами контрольной точки модели. Если вы хотите сделать тест, вы должны
Для trainset , testset , devset , общий формат заключается в следующем:
(Token) (Label)
for O
the O
lattice B_TAS
QCD I_TAS
computation I_TAS
of I_TAS
nucleon–nucleon I_TAS
low-energy I_TAS
interactions E_TAS
. O
It O
consists O
in O
simulating B_PRO
...
(Token) (Label)
马 B-LOC
来 I-LOC
西 I-LOC
亚 I-LOC
副 O
总 O
理 O
。 O
他 O
兼 O
任 O
财 B-ORG
政 I-ORG
部 I-ORG
长 O
...
Обратите внимание, что:
testset может существовать только с строкой Token . Во время тестирования модель выведет прогнозируемые объекты на основе test.csv . Выходные файлы включают два: test.out , test.entity.out (необязательно).
test.out
с тем же формированием, что и входной test.csv .
test.entity.out
Sentence
entity1 (Type)
entity2 (Type)
entity3 (Type)
...

Если вы хотите адаптировать этот проект к своей собственной задаче маркировки последовательности, вам могут понадобиться следующие советы.
Загрузите источники репо.
Схема маркировки (наиболее важная)
B_PER', i_loc' Модель: изменить архитектуру модели в ту, которую вы хотели, в BiLSTM_CRFs.py .
Набор данных: адаптироваться к вашему набору данных, в правильном формировании.
Обучение
Для получения дополнительной информации об использовании, пожалуйста, ссылаются на руководство
Вам приветствуется, чтобы выпустить что -нибудь не так.