我试图将文本解析为我创建的数据模型,特别是来自RPG书籍的怪物。我从pdf中提取文本,它看起来像这样:
Dire Rat
From age to age, dire rats vary in size. In this age, they're only half
as big as they sometimes get, but they're also twice as vicious.
1
st
level mook [beast ]
Initiative: +2
Infected bite +5 vs. AC-4 ongoing damage
AC 15
PD 15 HP 6 (mook)
MD 10
Mook: Kill one dire rat mook for every 6 damage you deal to the mob.
这是我想要的数据模型,碰巧用C#编写:
public interface IMonsterData
{
string Name { get; }
int Level { get; set; }
string Role { get; set; }
string Type { get; set; }
int Initiative { get; set; }
int ArmorClass { get; set; }
int PhysicalDefense { get; set; }
int MentalDefense { get; set; }
int HealthPoints { get; set; }
}
期望的结果如下所示:
Name = Dire Rat
Level = 1
Role = mook
Type = beast
Initiative = 2
ArmourClass = 15
PhysicalDefense = 15
MentalDefense = 10
HealthPoints = 6
源文本将这些怪物散布在一本书的一部分中,因此大多数页面都没有怪物,然后是一个带有怪物的部分。有些是适合页面的,有些是分开的,但我不认为这很重要,因为我已经使用我找到的工具将所有文本作为字符串解析出来。
我通过使用C#和.Net手动解析来解决这个问题,通过查找只有" st,nd,rd,th"并在这些行之间找到AC,PD,但我觉得这是一个很好的案例,可以通过Text Mining或其他形式的机器学习来解决。
问题是我对机器学习或从文本挖掘中使用的正确算法知之甚少,而且我只能在不知道任何关键词的情况下进行谷歌搜索。
我应该使用哪种类型的库,算法或类似方法来实现我的目标?
答案 0 :(得分:2)
这看起来像一个古老的正则表达式要解决的案例。 我按照以下方式处理: