الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل هذا الكود مكتوب بلغة البيرل؟ (سؤال عن كود HMM بلغة البايثون).

بدأه خريجة2013 في 26 أبريل 2012 · 10 رد · 815 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم لدي الكود التالي ولا اعرف باي لغة تمت كتابته

class HMM(object):

...

def train(s, observations, iterations=100):

s2update = list(s._states)

for state in [s.INITIAL, s.FINAL]:

if state in s2update: s2update.remove(state)

for _ in range(iterations):

# run the forward and backward algorithms and get the

# probability of the observations sequence

forword_P = s._forward(observations)

backward_P = s._backward(observations)

obs_prob = forword_P[len(observations)][s.FINAL]

# calculate probabilities of being at a given state and

# emitting observation i

emission_probs = ddict(lambda: {})

for i, observation in enumerate(observations):

for state in s2update:

emission_probs[state] = (

forword_P[state] * backward_P[state] /obs_prob)

# calculate probabilities of taking the transition

# between a pair of states for observations i and i + 1

transition_probs = ddict(lambda: ddict(lambda: {}))

transition_indices = range(len(observations) - 1)

for i in transition_indices:

next_obs = observations[i + 1]

for state1 in s2update:

for state2 in s2update:

transition_probs[state1][state2] = (

forword_P[state1] *

s._transitions[state1][state2] *

s._emissions[state2][next_obs] *

backward_P[i + 1][state2] /

obs_prob)

# update transition probabilities by summing the

# probabilities of each state-state transition

for state1 in s2update:

total = 0

for state2 in s2update:

count = s._transitions[state1][state2] = sum(

transition_probs[state1][state2]

for i in transition_indices)

total += count

# normalize counts into probabilities

if total:

for state2 in s2update:

s._transitions[state1][state2] /= total

# find which observations occurred at which indices

observation_indices = ddict(lambda: [])

for i, observation in enumerate(observations):

observation_indices[observation].append(i)

# update emission probabilities by summing the

# probabilities for each state-observation pair

for state in s2update:

total = 0

for obs, indices in observation_indices.items():

count = s._emissions[state][obs] = sum(

emission_probs[state] for i in indices)

total += count

# normalize counts into probabilities

if total:

for obs in observation_indices:

s._emissions[state][obs] /= total

def _backward(s, observations):

# initialize the trellis

probs = ddict(lambda: ddict(lambda: 0.0))

# all states have equal probability of the final state

for state in s._states:

probs[len(observations) - 1][state] = 1.0

# update the trellis for each observation

for i in xrange(len(observations) - 2, -1, -1):

for state in s._states:

# sum the probabilities of transitioning to

# the current state and emitting the current

# observation from any of the previous states

probs[state] = sum(

probs[i + 1][next_state] *

s._transitions[state][next_state] *

s._emissions[next_state][observations[i + 1]]

for next_state in s._states)

# sum the probabilities of transitioning from the start

# state to any of the paths in the trellis

probs[0][s.INITIAL] = sum(

probs[0][state] *

s._transitions[s.INITIAL][state] *

s._emissions[state][observations[0]]

for state in s._states)

return probs

الكتاب الذي اتعامل معه يتكلم عن لغة البيرل على ما اظن

لكن لا اعلم هل هذا الكود مكتوب بهذه اللغه ام لا؟

اذا كان الجواب ب، لا هل من الممكن تفيدونني لاي قسم اتوجه علما بان المادة مادة معالجة لغات طبيعيه

ولكم كل الشكر

#2

اطلعت على القسم واكتشفت انه ليس مكتوب بهذه اللغه

اذن ماهي هذي اللغه احتاج لفهم الكود حتى استطيع التعامل معه

#3

هذا الكود مكتوب بلغة تطبق مفهوم ال functional programming ...

ربما Ruby ... لا أعرف

#4

سا احاول البحث عن هذه اللغه ربما تطابق هذا الكود

#5

بحثت عن اكواد هذه اللغه ووجدت هناك اختلاف بطريقة الكتابه

#6

السلام عليكم ..

  1. مكتوب بلغة الــ Python و هذا هو الــ Hidden Markov Model الشهير ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7

جزاك الله خير

لكن انا لا اعرف اي شئ عن هذه اللغه اللغه التي اتقنها هي لغة الفيجول بيسك ولغة السي ++

اذا ممكن احد يتفضل علي ويقوم يتحويله الى احد هاتين اللغتين واكووون له شاااكره

انتظر ردودكم بفارغ الصبر

#8

السلام عليكم ...

  1. الــ HMM مكتوب بقريبا بكل اللغات ..
  2. هنا بالــ Cpp , أول رابط بالصفحة هو الكود ..
  3. و هنا في آخر الصفحة قسم الــ Download
  4. و هنا

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#9

كل الشكر لك اخوي والله يجعل جهدك هذا في ميزان حسناتك ويرزقك اعلى الجنان فرجت علي

بس سؤال اخير الكود غير قابل للتعديل صح ولالا هو معروف ولايمكن احذف منه شئ؟

لاني بصراحه لم يتم شرح هذه الجزئية لي ولكن هو نشاط كلفت به

كل الشكر مرة اخرى

#10

السلام عليكم ..

بارك الله بكم .. .. لا شكر على واجب ..

اقتباس
بس سؤال اخير الكود غير قابل للتعديل صح ولالا هو معروف ولايمكن احذف منه شئ؟
الكود على ما اعتقد .. جاهز و يعمل .. فلاداعي للتعديل أو الحذف فيه اي شي .

اتمنى أن أكون فهمت قصدك ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#11

اتمنى احد يساعدني ايضا .. انا كودي متعلق ايضا بنفس كود اختي خريجة 2013

وابغى الكود بلغة c++ ..

class HMM(object

):

...

def predict(self, observations):

# initialize the probabilities and backpointers

probs = ddict(lambda: ddict(lambda: 0.0))

probs[-1][self.INITIAL] = 1.0

pointers = ddict(lambda: {})

# update the probabilities for each observation

i = -1

for i, observation in enumerate(observations):

for state in self._states:

# calculate probabilities of taking a transition

# from a previous state to this one and emitting

# the current observation

path_probs = {}

for prev_state in self._states:

path_probs[prev_state] = (

probs[i - 1][prev_state] *

self._transitions[prev_state][state] *

self._emissions[state][observation])

# select previous state with the highest probability

best_state = max(path_probs, key=path_probs.get)

probs[state] = path_probs[best_state]

pointers[state] = best_state

# get the best final state

curr_state = max(probs, key=probs.get)

# follow the pointers to get the best state sequence

states = []

for i in xrange(i, -1, -1):

states.append(curr_state)

curr_state = pointers[curr_state]

states.reverse()

return states

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…