سؤال

أرغب في استخدام التعرف على الكيانات المسماة (NER) للعثور على العلامات المناسبة للنصوص في قاعدة البيانات.

أعلم أن هناك مقالة على ويكيبيديا حول هذا الموضوع والعديد من الصفحات الأخرى التي تصف NER، ويفضل أن أسمع منك شيئًا حول هذا الموضوع:

  • ما هي التجارب التي قمت بها مع الخوارزميات المختلفة؟
  • ما هي الخوارزمية التي توصي بها؟
  • ما هي الخوارزمية الأسهل في التنفيذ (PHP/Python)؟
  • كيف تعمل الخوارزميات؟هل التدريب اليدوي ضروري؟

مثال:

"في العام الماضي ، كنت في لندن حيث رأيت باراك أوباما." => العلامات:لندن، باراك أوباما

آمل أن تتمكن من مساعدتي.شكرا جزيلا لك مقدما!

هل كانت مفيدة؟

المحلول

للبدء بالخروج http://www.nltk.org/ إذا كنت تخطط للعمل مع بايثون على الرغم من أن الكود على حد علمي ليس "القوة الصناعية" ولكنه سيساعدك على البدء.

راجع القسم 7.5 من http://nltk.googlecode.com/svn/trunk/doc/book/ch07.html ولكن لفهم الخوارزميات، ربما يتعين عليك قراءة جزء كبير من الكتاب.

تحقق من ذلك أيضًا http://nlp.stanford.edu/software/CRF-NER.shtml.لقد تم ذلك باستخدام جافا،

NER ليس موضوعًا سهلاً وربما لن يخبرك أحد بأن "هذه هي أفضل خوارزمية"، فمعظمها لديه إيجابيات وسلبيات.

بلدي 0.05 دولار.

هتافات،

نصائح أخرى

يعتمد ذلك على ما إذا كنت تريد:

للتعرف على NER:مكان ممتاز للبدء به هو نلتك, ، وما يرتبط بها كتاب.

لتنفيذ الحل الأفضل:هنا سوف تحتاج إلى البحث عن أحدث ما توصلت إليه التكنولوجيا.قم بإلقاء نظرة على المنشورات الموجودة في تريك.اجتماع أكثر تخصصا هو Biocreative (مثال جيد على NER المطبق على مجال ضيق).

لتنفيذ الحل الأسهل:في هذه الحالة، كل ما تريد فعله هو وضع علامات بسيطة، وسحب الكلمات التي تم وضع علامة عليها كأسماء.يمكنك استخدام علامة تمييز من nltk، أو حتى مجرد البحث عن كل كلمة فيها باي وردنت ووضع علامة عليها باستخدام الكلمات الأكثر شيوعًا.


تتطلب معظم الخوارزميات نوعًا من التدريب، وتعمل بشكل أفضل عندما يتم تدريبها على المحتوى الذي يمثل ما ستطلب منها وضع علامة عليه.

هناك عدد قليل من الأدوات وواجهة برمجة التطبيقات (API) المتوفرة.

توجد أداة مبنية أعلى DBPedia تسمى DBPedia Spotlight (https://github.com/dbpedia-spotlight/dbpedia-spotlight/wiki).يمكنك استخدام واجهة REST الخاصة بهم أو تنزيل وتثبيت الخادم الخاص بك.والشيء الرائع هو أنه يعين الكيانات لوجودها في DBPedia، مما يعني أنه يمكنك استخراج البيانات المرتبطة المثيرة للاهتمام.

تمتلك AlchemyAPI (www.alchemyapi.com) واجهة برمجة تطبيقات يمكنها القيام بذلك عبر REST أيضًا، وتستخدم نموذجًا مجانيًا.

أعتقد أن معظم التقنيات تعتمد على القليل من البرمجة اللغوية العصبية للعثور على الكيانات، ثم استخدام قاعدة بيانات أساسية مثل Wikipedia وDBPedia وFreebase وما إلى ذلك لتوضيح الغموض وملاءمته (على سبيل المثال، محاولة تحديد ما إذا كانت المقالة التي تذكر شركة Apple تدور حول الفاكهة أم لا). او الشركة...سنختار الشركة إذا كانت المقالة تتضمن كيانات أخرى مرتبطة بشركة Apple).

قد ترغب في تجربة أحدث نظام ربط سريع للكيانات من Yahoo Research - تحتوي الورقة أيضًا على مراجع محدثة للأساليب الجديدة لـ NER باستخدام التضمينات القائمة على الشبكة العصبية:

https://research.yahoo.com/publications/8810/lightweight-multilingual-entity-extraction-and-linking

يمكن للمرء استخدام الشبكات العصبية الاصطناعية لإجراء التعرف على الكيان المسمى.

فيما يلي تطبيق لشبكة LSTM + CRF ثنائية الاتجاه في TensorFlow (python) لإجراء التعرف على الكيان المسمى: https://github.com/Franck-Dernoncourt/NeuroNER (يعمل على لينكس/ماك/ويندوز).

إنه يعطي نتائج حديثة (أو قريبة منها) على العديد من مجموعات بيانات التعرف على الكيانات المسماة.كما ذكر ألي، فإن كل خوارزمية التعرف على الكيانات المسماة لها جوانبها السلبية والإيجابية.

بنية الشبكة العصبية الاصطناعية:

enter image description here

كما هو موضح في TensorBoard:

enter image description here

لا أعرف حقًا شيئًا عن NER، ولكن انطلاقًا من هذا المثال، يمكنك إنشاء خوارزمية تبحث عن الحروف الكبيرة في الكلمات أو شيء من هذا القبيل.لذلك أوصي بـ regex باعتباره الحل الأكثر سهولة في التنفيذ إذا كنت تفكر بشكل صغير.

هناك خيار آخر وهو مقارنة النصوص بقاعدة بيانات، والتي ستطابق السلسلة المحددة مسبقًا كعلامات اهتمام.

بلدي 5 سنتات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top