将置换树转换为英文散文

时间:2012-08-06 14:59:55

标签: c# combinations

我正在设计一个读取用户输入的数值的软件。然后它生成用于医疗报告的句子。由于句子之间存在如此多的差异并且为每种类型的方差创建一个限制因此非常长并且可能没有效果,因此出现了一些复杂性。

让我举一个我正在努力的例子:

让我们说诊断依赖于人类的神经。

考虑以下神经:中位数,尺骨,放射状。

现在,假设用户在软件中输入了数值,这会产生神经异常。

考虑以下陈述:

对左侧正中神经的神经病变的指导。

双侧尺神经神经病变的指征。

指示右桡神经的神经病变。

每个语句都由一组语句生成,并且可以将这些语句组合在一起以获得每个变体。变种是 -

左(L),右(R),双侧(B) - 和中位,尺骨和桡骨。

因此方差为3 ^ 3 = 27.

然而,当有更多的神经时,方差会以异常的方式上升。如果我有5个神经,那么它将是3 ^ 5。

问题是:如何设计软件以产生以下句子:

左中位,双侧尺骨和右桡神经的神经病变的指示,实际上没有这些陈述的每个组合和每个的每个条件陈述。

它需要适用于各种语句:举一个句子方差的例子:

左胫神经的神经传导速度降低。

降低左腓神经的神经传导速度。

组合 - 降低左侧胫神经和腓神经的神经传导速度。

总结:软件将产生各种类型的句子:用户选择适当的相似句子,程序将它们组合在一起。

3 个答案:

答案 0 :(得分:0)

您可以为每个可能的诊断设置集合,然后在计算问题时为它们添加神经(?字符串)。然后,对于每个诊断,您将通过迭代匹配的集合并将每个神经组合成代表性陈述(“左胫骨和腓神经的神经传导速度降低”)来产生一个句子。这可能是我的方法。

您也可以采用相反的方法并拥有一个神经类,每个诊断具有属性。您可以修改这些属性,然后迭代不同的诊断并搜索具有某些属性的神经,尽管这似乎较慢(双重迭代)。

答案 1 :(得分:0)

几年前我做了类似的事情,为了节省一些用户一次又一次地输入重复文本。我创建了一系列复选框,用户可以检查这些复选框是否会从数据源(sql?)加载文本,将它们连接成一个文本框。这将允许用户编辑文本以确保它是可读的并且在其上有自己的旋转,但是自动插入模板化文本将节省键入它的时间。他们有不同的类别,所以我添加了一个改变了复选框的组合框。

所以你可以: 身体部位(下拉):手臂,腿部 当用户选择“Arm”时,会出现手指,手腕,肘部等的列表。 当选择“腿部”时,它会隐藏手臂的复选框,然后显示腿部:膝盖,脚后跟等。

取消选中此框会在文本框中找到该文本并将其删除。

我还创建了另一个更像网格的用户,用户可以点击“添加行”来添加更多行。每行都有一系列组合框,他们首先选择类别,然后可能是一个子类别,最后是模板化项目的名称,例如“双侧尺神经”。

希望这有帮助 - 我可以根据您的需要提供示例代码。

答案 2 :(得分:0)

您可能需要一些条件,但理想情况下,您需要使用某种模板。一个简单的模板方法是String.Format()。例如:

String.Format("{0} {1}.", getSymptom(userSymptomNumber), getLocation(userLocationNumber));

在这个非常简单的场景中,getSymptom将返回“神经病变的神经病”,而getLocation将从某种数据存储中返回“左中位神经”。更复杂的模板可以允许包含集合。您应该查看一些可用的C#模板引擎,或者您可以使用类似于String.Format的自己的轻量级模板代码。你的核心条件将决定你的句子是如何形成的。从那里,它只是填写用户输入的变化。你不应该发出数以千计的完整句子。