从给定字符串中提取任意位置的可行性?

我有很多包含旅行信息的电子表格,还有其他一些信息。

我需要从描述旅行的行中提取起始和结束位置,以及行中的一两个其他信息,但这些额外字段是什么并不重要。

没有已知的所有位置列表,也没有固定的文本模式,我能寻找的只有位置名称。

我正在搜索的字段中包含0到2个位置,有时位置有别名。

问题

如果我们有以下内容:

00229 | 445 | RTF | Jan   |  trn_rtn_co  | Chicago to Base1 00228 | 445 | RTF | Jan   |  train       | Metroline to home coming from Base100228 | 445 | RTF | Jan   |  train_s     | Standard train journey to Friends

我想要的可能是这样的(虽然具体情况会有所不同):

RTF|Jan|Chicago   |Base1RTF|Jan|Home      |Base1RTF|Jan|NULL      |Friends

然后继续查找Base1Friends对那个人(其唯一ID是RTF)意味着什么,并用合理的位置替换它们(假设他们只有一组‘朋友’):

RTF|Jan|Chicago   |RockfordRTF|Jan|Home      |RockwordRTF|Jan|NULL      |Milwaukee

我的需求

我需要一种方法从最后一列中提取关键词,例如:Metroline to home coming from Base1

我寻找的词有三种类型:

  1. 家庭位置
    这些是已知且有限的,我可以从列表中获取这些信息
  2. 家庭别名
    这些是已知且有限的,我可以从列表中获取这些信息
  3. 外出位置
    这些是未知的,但它们是英国的城市/城镇等,我不知道如何在字符串中识别这些。这是我的主要问题

我的想法

我想到的首选程序是awk,但我不知道是否能可靠地搜索到位置名称的专有名词(即位置)。

是否有标准位置的包、库或字典?

我能否让程序扫描电子表格并‘学习’位置名称?

这似乎是一个已经解决的问题(即在文本字符串中查找词),但我不确定我在做什么,而且我只是一个初级程序员。

任何关于我能做些什么的帮助都将不胜感激。

编辑:

任何像“US_Locations_Cities是你可以检查的对象”,“在awk中使用…检查文件中提到的字符串”,“有语言X的库可以让程序学习识别位置名称,它不是RegEx,但可能有效”或“这里有位置名称的字典这里”这样的回答都可以。

最终,任何能帮助我实现目标(即获取位置名称!)的东西都将非常好。


回答:

很遗憾地告诉你,我认为这不是100%可编程的。最好的方法是定义一些标准搜索:

  • Chicago to Base1
    [WORD] to [WORD]:
    其中“to”是固定的,你寻找前后各有一个词。前面的词是你的来源,后面的词是你的目标

  • Metroline to home coming from Base1
    [WORD] to [WORD] coming from [WORD]:
    其中“to”和“coming from”是固定的,你寻找三个词在适当的位置。

  • 等等

如果你能匹配来源和目标 -> 好的
如果你不能匹配某些东西,那么为那行抛出一个错误,让用户决定,或者更好的是实现适当的纠正,让程序自动重新评估那行。

这些是非平凡的目标。考虑以下几点:

  • 美国以外的城市
  • 非英语文本条目
  • 缩写

对于自动错误纠正,尝试将找到的[WORD]与美国或其他城市的列表进行匹配。如果没有找到城市,则抛出错误。如果你发现错误,要么将未找到的城市添加到你的城市列表中,要么将城市名称翻译成一个公开已知(官方)的名称。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注