← يتطلب: Python مع IRIS التحليلات متقدم ⏱ 5 ساعات الدورة 22

تحليل النصوص iKnow

iKnow Text Analytics

🎯 أهداف التعلم

1فهم iKnow
2استخراج المعلومات
3بناء نطاقات معرفية
4تحليل المشاعر

01 مقدمة في iKnow

iKnow هو محرك تحليل النصوص المدمج في IRIS.

ClassMethod AnalyzeText(text) {
  Set domain = ##class(%iKnow.Domain).%New("MyDomain")
  Set source = ##class(%iKnow.Source.Stream).%New()
  Do source.SetString(text)
  Do domain.AddSource(source)
  // استخراج الكيانات
  Set rs = ##class(%SQL.Statement).%ExecDirect(,
    "SELECT entity, frequency FROM %iKnow.Entities WHERE domain = 'MyDomain'")
  While rs.%Next() {
    Write rs.%Get("entity"), " (", rs.%Get("frequency"), ")", !
  }
}

02 Domain Profiling

Domain Profiling يحلل مجموعة من النصوص لاستخراج المواضيع الرئيسية.

// إنشاء Domain وتحليل مجموعة نصوص
ClassMethod ProfileDomain(domainName) {
  Set domain = ##class(%iKnow.Domain).%New(domainName)
  
  // إضافة مصادر متعددة
  Set sources = ["تقرير طبي 1", "تقرير طبي 2", "تقرير طبي 3"]
  Set iter = sources.%GetIterator()
  While iter.%GetNext(.key, .text) {
    Set source = ##class(%iKnow.Source.Stream).%New()
    Do source.SetString(text)
    Do domain.AddSource(source)
  }
  
  // استخراج المواضيع الرئيسية
  Set query = "SELECT TOP 10 concept, frequency "
  Set query = query _ "FROM %iKnow.Concepts "
  Set query = query _ "WHERE domain = '" _ domainName _ "' "
  Set query = query _ "ORDER BY frequency DESC"
  
  Set rs = ##class(%SQL.Statement).%ExecDirect(, query)
  While rs.%Next() {
    Write rs.%Get("concept"), ": ", rs.%Get("frequency"), !
  }
}
03

تحليل النصوص العربية

استخدام iKnow لتحليل النصوص العربية الطبية.

// تحليل النصوص العربية
Class Hospital.NLP.ArabicAnalyzer
{
    ClassMethod AnalyzeArabicText(text As %String)
    {
        Set domain = ##class(%iKnow.Domain).OpenId("MedicalTexts")
        
        // تحليل النص
        Set result = ##class(%iKnow.Analyzer).AnalyzeText(domain, text)
        
        // استخراج المصطلحات الطبية
        Set terms = ##class(%ListOfDataTypes).%New()
        While result.%Next() {
            Set entity = result.%GetString(1)
            Set type = result.%GetString(2)
            
            // تصنيف المصطلحات
            If type = "MEDICATION" {
                Do terms.Insert("دواء: " _ entity)
            } ElseIf type = "CONDITION" {
                Do terms.Insert("حالة: " _ entity)
            } ElseIf type = "PROCEDURE" {
                Do terms.Insert("إجراء: " _ entity)
            }
        }
        
        // عرض النتائج
        Write "المصطلحات المستخرجة:", !
        For i = 1:1:terms.Count() {
            Write "  ", terms.GetAt(i), !
        }
    }
    
    // تحليل تعليقات المرضى
    ClassMethod AnalyzeFeedback()
    {
        &sql(SELECT ID, Feedback INTO :id, :feedback 
             FROM Hospital.Models.Feedback
             WHERE Analyzed = 0)
        While SQLCODE = 0 {
            Do ..AnalyzeArabicText(feedback)
            &sql(FETCH)
        }
    }
}

📝 اختبار التحقق

1. ما هو iKnow؟

محرك لتحليل النصوص وفهم اللغة الطبيعية

ما هو Domain Profiling في iKnow؟

Domain Profiling يحلل مجموعة من النصوص لاستخراج المواضيع والكيانات الرئيسية

ما هي اللغات التي يدعمها iKnow؟
💡 الشرح

iKnow يدعم لغات متعددة بما في ذلك الإنجليزية والعربية واليابانية والإسبانية

💡 النقاط الرئيسية

  • iKnow يفهم اللغة الطبيعية ويستخرج الكيانات والعلاقات
  • Domain Profiling يكشف الموضوعات الرئيسية
  • تحليل المشاعر يحدد الإيجابية والسلبية
  • يمكنك تحليل النصوص العربية باستخدام iKnow
  • iKnow يتكامل مع DeepSee للتحليلات