تنفيذ TensorFlow لنموذج BILSTM+CRF ، لمهام وضع العلامات التسلسل.
Sequential labeling هو أحد المنهجية النموذجية لنمذجة مهام التنبؤ التسلسلية في NLP. تشمل مهام العلامات المتسلسلة الشائعة ، على سبيل المثال ،
أخذ مهمة التعرف على الكيان المسماة (NER) كمثال:
Stanford University located at California .
B-ORG I-ORG O O B-LOC O هنا ، سيتم استخراج كيانين ، Stanford University California . وعلى وجه التحديد ، يتم وضع علامة على كل token في النص label مقابلة. على سبيل المثال ، { token : Stanford ، label : b-org }. يهدف نموذج وضع العلامات التسلسل إلى التنبؤ بتسلسل التسمية ، مع إعطاء تسلسل رمزي.
BiLSTM+CRF المقترحة من قبل Lample et al. ، 2016 ، هو حتى الآن النموذج العصبي الكلاسيكي والاستقرار لمهام وضع العلامات المتسلسلة. 
تكوين جميع الإعدادات
train / test / interactive_predict / api_service ]BIO / BIESO ]PER | LOC | ORG ]تسجيل كل شيء
عرض تطبيق الويب الخاص بـ Easy Displication
الكائن الموجهة: BILSTM_CRF ، مجموعات البيانات ، inviger ، utils
وحدات مع بنية واضحة ، سهل ل DIY.
شاهد المزيد في الكتيب.
قم بتنزيل Repo للاستخدام المباشر.
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 PY.data-subfold ، يتم وضع مجموعات البيانات.checkpoints-subfold ، يتم تخزين نقاط التفتيش النموذجية.demo_webapp Fold ، يمكننا إظهار النظام في الويب ، ويوفر API.tools ، وتوفير بعض الأوساط غير المتصلة بالإنترنت.الملفات
main.py هو ملف Python الإدخال للنظام.system.config هو ملف التكوين لجميع إعدادات النظام.HandBook.md بعض تعليمات الاستخدام.BiLSTM_CRFs.py هو النموذج الرئيسي.Configer.py يخلط system.config .DataManager.py يدير مجموعات البيانات والجدولة.utils.py على أدوات الطيران. تحت الخطوات التالية:
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 الإدخال. csv.
test.entity.out
Sentence
entity1 (Type)
entity2 (Type)
entity3 (Type)
...

إذا كنت تريد تكييف هذا المشروع مع مهمة وضع العلامات الخاصة بك الخاصة ، فقد تحتاج إلى النصائح التالية.
قم بتنزيل مصادر الريبو.
نظام وضع العلامات (الأهم)
B_PER', i_loc' النموذج: قم بتعديل بنية النموذج إلى تلك التي تريدها ، في BiLSTM_CRFs.py .
مجموعة البيانات: التكيف مع مجموعة البيانات الخاصة بك ، في التكوين الصحيح.
تمرين
لمزيد من التفاصيل المستخدمة ، يرجى يشير إلى الكتيب
أنت موضع ترحيب لإصدار أي شيء خاطئ.