Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logic Python中基于查询的文档摘要的模糊逻辑_Logic_Fuzzy Logic_Expert System_Pyke - Fatal编程技术网

Logic Python中基于查询的文档摘要的模糊逻辑

Logic Python中基于查询的文档摘要的模糊逻辑,logic,fuzzy-logic,expert-system,pyke,Logic,Fuzzy Logic,Expert System,Pyke,我试图使用模糊逻辑来加权和提取查询的最佳句子。我提取了以下可用于模糊逻辑的特征: 每个句子都有余弦值 这个句子中有多少专有名词 句子在文档中的位置 句子长度 我想使用上述特性来应用模糊逻辑。例如,我想创建如下所示的规则库 如果余弦值>=0.9&&numberOfPropernoun>=1 那么这个句子很重要 我不太确定如何开始实现规则库、事实和推理机。希望有人能指导我用python实现这一点。请注意,我不熟悉逻辑编程语言。我想用python实现它这只是一个草图;我甚至不打算尝试这个代码,因为

我试图使用模糊逻辑来加权和提取查询的最佳句子。我提取了以下可用于模糊逻辑的特征:

  • 每个句子都有余弦值
  • 这个句子中有多少专有名词
  • 句子在文档中的位置
  • 句子长度
我想使用上述特性来应用模糊逻辑。例如,我想创建如下所示的规则库

如果余弦值>=0.9&&numberOfPropernoun>=1 那么这个句子很重要


我不太确定如何开始实现规则库、事实和推理机。希望有人能指导我用python实现这一点。请注意,我不熟悉逻辑编程语言。我想用python实现它

这只是一个草图;我甚至不打算尝试这个代码,因为我不确定你想要什么

为您的功能创建一个类:

Features = namedtuple('Features', ['cosine', 'nouns', 'position', ...])
等等

现在,假设您正在构建AST。你的语言有什么语法?好吧,你有条件,条件也有结果,你的条件可以由布尔运算符组合,所以让我们做一些基本的:

class CosineValue(object):
  def evaluate(self, features):
    return features.cosine

class Nouns(object):
  def evaluate(self, features):
    return features.nouns

... etc.
现在需要将这些AST节点与一些操作结合起来

class GreaterThan(object):
  def __init__(self, property, value):
    self.property, self.value = property, value

  def evaluate(self, sentence):
    return property.evaluate(sentence) > self.value
现在
GreaterThan(cosinavalue(),0.9)
是一个对象(实际上是一个抽象语法树),它表示
cosinavalue>0.9
。您可以这样评估它:

expr = GreaterThan(CosineValue(), 0.9)
expr.evaluate(Features(cosine=0.95, ...))  # returns True
expr.evaluate(Features(cosine=0.40, ...))  # returns False
这些对象看起来不太像,但它们正在具体化您的过程。它们的结构编码了以前的代码。想想看,因为这是你尝试做的唯一困难的部分:理解如何通过将计算转化为结构来延迟计算,以及当值成为计算的一部分时如何处理。您可能一直在思考如何编写这些“if”语句,并将它们与运行它们所需的代码和运行时值分开。现在,您应该能够了解如何进行编程,但这是一种更高级的编程思维方式

现在需要构建if/then结构。我也不确定你想在这里做什么,但我想说你的if/then将是一个类,它接受一个表达式,就像我们刚刚创建的一个参数和一个“then”案例,并进行测试,执行或不执行“then”案例。可能您需要if/then/else,或者一种跟踪它是否触发的方法,或者一种将if评估为值的方法。你必须考虑这一部分;没有人能根据你上面写的告诉你你应该做什么

为了使您的条件更强大,您需要为布尔运算符添加更多的类,这些布尔运算符将条件作为参数,但这应该很简单;您将有
,它们都将接受两个
条件
参数,并且它们的计算将做明智的事情。您可以创建一个条件超类,然后添加一些方法,如
来简化这些结构的生成

最后,如果您想解析类似于上面所述的内容,您应该尝试一下,但请确保您首先找到了AST,否则这将是一场艰苦的战斗。或者看看他们有什么;也许他们对此有一些原语,我很久没有处理pyparsing了


祝你好运,下次请问一个更好的问题

这只是一个草图;我甚至不打算尝试这个代码,因为我不确定你想要什么

为您的功能创建一个类:

Features = namedtuple('Features', ['cosine', 'nouns', 'position', ...])
等等

现在,假设您正在构建AST。你的语言有什么语法?好吧,你有条件,条件也有结果,你的条件可以由布尔运算符组合,所以让我们做一些基本的:

class CosineValue(object):
  def evaluate(self, features):
    return features.cosine

class Nouns(object):
  def evaluate(self, features):
    return features.nouns

... etc.
现在需要将这些AST节点与一些操作结合起来

class GreaterThan(object):
  def __init__(self, property, value):
    self.property, self.value = property, value

  def evaluate(self, sentence):
    return property.evaluate(sentence) > self.value
现在
GreaterThan(cosinavalue(),0.9)
是一个对象(实际上是一个抽象语法树),它表示
cosinavalue>0.9
。您可以这样评估它:

expr = GreaterThan(CosineValue(), 0.9)
expr.evaluate(Features(cosine=0.95, ...))  # returns True
expr.evaluate(Features(cosine=0.40, ...))  # returns False
这些对象看起来不太像,但它们正在具体化您的过程。它们的结构编码了以前的代码。想想看,因为这是你尝试做的唯一困难的部分:理解如何通过将计算转化为结构来延迟计算,以及当值成为计算的一部分时如何处理。您可能一直在思考如何编写这些“if”语句,并将它们与运行它们所需的代码和运行时值分开。现在,您应该能够了解如何进行编程,但这是一种更高级的编程思维方式

现在需要构建if/then结构。我也不确定你想在这里做什么,但我想说你的if/then将是一个类,它接受一个表达式,就像我们刚刚创建的一个参数和一个“then”案例,并进行测试,执行或不执行“then”案例。可能您需要if/then/else,或者一种跟踪它是否触发的方法,或者一种将if评估为值的方法。你必须考虑这一部分;没有人能根据你上面写的告诉你你应该做什么

为了使您的条件更强大,您需要为布尔运算符添加更多的类,这些布尔运算符将条件作为参数,但这应该很简单;您将有
,它们都将接受两个
条件
参数,并且它们的计算将做明智的事情。您可以创建一个条件超类,然后添加一些方法,如
来简化这些结构的生成

最后,如果您想解析类似于上面所述的内容,您应该尝试一下,但要确保您拥有AST fig