# -*- coding: utf-8 -*-
from numpy import log2
from pickle import load

"""
* Clase que se encarga de ver la información mutua que hay entre dos tokens
* sirve para determinar si es colocación o no
"""

class MI:

	def __init__(self):
		self.words = load(open("./models/words.d",'r'))
		self.ngrams = load(open("./models/ngrams.d","r"))
		self.count = self.count()

	def count(self):
		cnt = 0
		for i in self.words:
			cnt += self.words[i]
		return cnt

	def eval(self,str1,str2):
		try:
			sup = float(self.ngrams[str1+"_"+str2])/float(self.count)
			inf = float(self.words[str1]) * float(self.words[str2])
			if inf <= 0 or sup <= 0:
				return 0
			else:
				inf = inf/(float(self.count)*float(self.count))
				return log2(sup/inf)
		except:
			return 0 

# -*- coding: utf-8 -*-
from numpy import log2
from pickle import load

"""
* Clase que se encarga de ver la información mutua que hay entre dos tokens
* sirve para determinar si es colocación o no
"""

class MI:

	def __init__(self):
		self.words = load(open("./models/words.d",'r'))
		self.ngrams = load(open("./models/ngrams.d","r"))
		self.count = self.count()

	def count(self):
		cnt = 0
		for i in self.words:
			cnt += self.words[i]
		return cnt

	def eval(self,str1,str2):
		try:
			sup = float(self.ngrams[str1+"_"+str2])/float(self.count)
			inf = float(self.words[str1]) * float(self.words[str2])
			if inf <= 0 or sup <= 0:
				return 0
			else:
				inf = inf/(float(self.count)*float(self.count))
				return log2(sup/inf)
		except:
			return 0 

# -*- coding: utf-8 -*- * Clase que se encarga de ver la información mutua que hay entre dos tokens * sirve para determinar si es colocación o no