سؤال

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

"ماني راميريز يجعل عودته للهرب من هيوستن أستروس"،

ما هي طريقة خفيفة الوزن / سهلة للحصول على الأسماء من جملة؟ لبدء، أعتقد أنني سأقصرها على الأسماء المناسبة، لكنني لا أريد أن أقتصر على ذلك (ولا أريد الاعتماد على Regex البسيط الذي يفترض أن أي شيء يسدوه عنوان مناسب).

لجعل هذا السؤال أسوأ، ما هي الأشياء التي لا أسألك بها؟ هل أحتاج إلى كائن من الكلمات الموجودة للبدء؟ ما هي أدوات التحليل المعجمي الذي أحتاج إلى معرفته لجعل هذا العمل؟ لقد صادفت سؤال آخر حول هذا الموضوع وأنا أحفر من خلال تلك الموارد الآن.

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

المحلول

استخدم ال nltk., ، خاصه الفصل 7 على استخراج المعلومات.

أنت تقول أنك تريد استخراج المعنى، وهناك وحدات لتحليل الدلالي، لكنني أعتقد أنه كل ما تحتاجه - وبصراحة واحدة من المناطق الوحيدة لأجهزة الكمبيوتر NLP يمكن التعامل معها الآن.

انظر الأقسام 7.5 و 7.6 بشأن الفرعية من التعرف على الكيان المسمى (إلى القطعة وتصنيف ماني راميرز كشخص، المتهربون كمنظمة رياضية، وهيوستن أستروس كمنظمة رياضية أخرى، أو أي ما يناسب مجالك) واستخراج العلاقات. هناك مكتغة NER التي يمكنك إضافتها بمجرد تثبيت NLTK. من أمثلةهم، استخراج كيان جغرافي سياسي (GPE) وشخص:

>>> sent = nltk.corpus.treebank.tagged_sents()[22]
>>> print nltk.ne_chunk(sent) 
(S
  The/DT
  (GPE U.S./NNP)
  is/VBZ
  one/CD
  ...
  according/VBG
  to/TO
  (PERSON Brooke/NNP T./NNP Mossman/NNP)
  ...)

ملاحظة ستظل بحاجة إلى معرفة التوت والعلامات، كما تمت مناقشته في الفصول السابقة، للحصول على النص الخاص بك بالتنسيق الصحيح لهذه المهام IE.

نصائح أخرى

تحتاج إلى أن ننظر إلى مجموعة أدوات اللغة الطبيعية, ، وهذا هو بالضبط هذا النوع من الأشياء.

هذا القسم من الدليل يبدو ذو صلة للغاية: تصنيف ووضع علامات الكلمات - إليك استخراج:

>>> text = nltk.word_tokenize("And now for something completely different")
>>> nltk.pos_tag(text)
[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'),
('completely', 'RB'), ('different', 'JJ')]

هنا نرى ذلك و هو CC، والاقتران المنسق؛ حاليا و بالكامل هي rb، أو الأفعال؛ بالنسبة في، حرف الجر؛ شيئا ما هو nn، اسم؛ و مختلف هو JJ، صفة.

معالجة اللغة الطبيعية (NLP) هي اسم التحليل، وكذلك اللغة الطبيعية. توجد العديد من الخوارزميات والتدلية، وهي مجال نشط للبحث. مهما كانت الخوارزمية التي سترمزها، ستحتاج إلى تدريبها على كوربوس. تماما مثل إنسان: نتعلم لغة من خلال قراءة النص الذي كتبه أشخاص آخرون (و / أو من خلال الاستماع إلى الجمل التي ينطق بها أشخاص آخرون).

من الناحية العملية، إلقاء نظرة على مجموعة أدوات اللغة الطبيعية. وبعد للحصول على أساس نظري لأي شيء ستحصل عليه، قد ترغب في تسجيل المغادرة أسس معالجة اللغة الطبيعية الإحصائية بواسطة كريس مانينغ وهينريتش شوتزي.

alt text
(مصدر: stanford.edu.)

هنا هو الكتاب الذي تعثرت عليه مؤخرا: معالجة اللغة الطبيعية مع بيثون

ما تريد يسمى NP (عبارة الاسم) بالقطع، أو استخراج.

بعض الروابط هنا

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

هذا هو موضوع معقد حقا حقا. بشكل عام، يقع هذا النوع من الأشياء تحت عنوان معالجة اللغات الطبيعية، ويميل أن يكون صعبا في أحسن الأحوال. الصعوبة في هذا النوع من الأشياء هي بالضبط لماذا لا يزال هناك نظام آلي بالكامل للتعامل مع خدمة العملاء وما شابه ذلك.

بشكل عام، يعتمد نهج هذه الأشياء حقا على بدقة ما هو مجال مشكلتك. إذا كنت قادرا على Winnow نطاق المشكلة، فيمكنك الحصول على بعض الفوائد الخطيرة للغاية؛ لاستخدام مثالك، إذا كنت قادرا على تحديد أن مجال مشكلتك هو لعبة البيسبول، فإن ذلك يمنحك بداية قوية حقا. حتى ذلك الحين، إنه الكثير من العمل للحصول على أي شيء مفيد بشكل خاص.

لما يستحق، نعم، ستكون كائنات موجودة من الكلمات مفيدة. والأهم من ذلك، تحديد التعقيد الوظيفي المتوقع للنظام سيكون حاسما؛ هل تحتاج إلى تحليل جمل بسيطة، أم أن هناك حاجة لتحليل السلوك المعقد؟ يمكنك تقييد المدخلات إلى مجموعة بسيطة نسبيا؟

التعبيرات العادية يمكن أن تساعد في بعض السيناريو. إليك مثال مفصل: ما هو الماسح الضوئي الأكثر ذكر في منتدى CNET, ، والتي استخدم تعبيرا منتظما للعثور على جميع الماسحات الضوئية المذكورة في مشاركات المنتدى CNET.

في المنشور، تم استخدام تعبير منتظم على هذا النحو:

(?i)((?:\w+\s\w+\s(?:(?:(?:[0-9]+[a-z\-]|[a-z]+[0-9\-]|[0-9])[a-z0-9\-]*)|all-in-one|all in one)\s(\w+\s){0,1}(?:scanner|photo scanner|flatbed scanner|adf scanner|scanning|document scanner|printer scanner|portable scanner|handheld scanner|printer\/scanner))|(?:(?:scanner|photo scanner|flatbed scanner|adf scanner|scanning|document scanner|printer scanner|portable scanner|handheld scanner|printer\/scanner)\s(\w+\s){1,2}(?:(?:(?:[0-9]+[a-z\-]|[a-z]+[0-9\-]|[0-9])[a-z0-9\-]*)|all-in-one|all in one)))

من أجل مطابقة أي مما يلي:

  • كلمتين، ثم رقم النموذج (بما في ذلك الكل في واحد)، ثم "الماسح الضوئي"
  • "الماسح الضوئي"، ثم واحدة أو كلمتين، ثم رقم النموذج (بما في ذلك الكل في واحد)

نتيجة لذلك، كان النص المستخرج من المنصب،

  1. توقف HP C9900A ماسح الصور
  2. مسح الأشعة السينية القديمة
  3. جديد إبسون V700 الماسح الضوئي
  4. HP ScanJet 4850 الماسح الضوئي
  5. إبسون الكمال 3170 الماسح الضوئي

هذا الحل التعبير العادي يعمل بطريقة ما.

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