2

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

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

假设诊断依赖于人类的神经。

考虑以下神经:正中神经、尺神经、桡神经。

现在,假设用户将数值输入到软件中,该软件会生成哪些神经异常。

考虑以下陈述:

指示左侧正中神经的神经病变。

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

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

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

左 (L)、右 (R)、双侧 (B) - 以及正中、尺侧和桡侧。

所以方差是 3^3 = 27。

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

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

指示左侧正中神经、双侧尺神经和右侧桡神经的神经病变,但实际上没有这些陈述的每一种组合以及每一种的每一种条件陈述。

它需要适用于各种陈述:举一个句子变化的例子:

左胫神经的神经传导速度减慢。

左侧腓神经的神经传导速度减慢。

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

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

4

3 回答 3

0

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

你也可以做相反的方法,并有一个神经类,每个诊断都有属性。您可以修改这些属性,然后迭代不同的诊断并搜索具有某些属性的神经,尽管这看起来更慢(双迭代)。

于 2012-08-06T15:11:24.123 回答
0

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

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

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

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

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

于 2012-08-06T15:11:55.480 回答
0

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

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

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

于 2012-08-06T16:44:32.170 回答