检查字符串是否为句子

时间:2018-07-29 23:03:54

标签: python-3.x nlp nltk spacy data-extraction

我有一个文本文件,必须删除所有没有任何意义的语句,换句话说,我必须检查是否为句子的语句。

例如:

1. John is a heart patient.
2. Dr. Green, Rob is the referring doctor for the patient.
3. Jacob Thomas, M.D. is the ordering provider

4. Xray Shoulder PA, Oblique, TRUE Lateral, 18° FOSSA LAT LT; Status: Complete;

句子1,2(广告3)具有某些含义 但是句子4没有任何意义,所以我想消除它。

我可以知道怎么做吗?

2 个答案:

答案 0 :(得分:1)

很难100%自信,但让我们尝试。

我可以使用Amazon Comprehend-自然语言处理和文本分析,并在句子上创建自己的指标。例如:

约翰是一位心脏病患者。 亚马逊会给您:“。”标点,“一个”限定词,“心脏”名词,“是”动词,“约翰”专有名词,“耐心”名词。 1个标点,1个确定词,2个名词,1个动词,1个专有名词。可能您会有名词和绿色的句子。

在您的最后一句话中,我们有: 3个标点,1个数字,11个专有名词。您没有动作(动词),这些句子可能无效。

答案 1 :(得分:0)

此任务似乎非常困难;但是,假设您拥有训练数据,则可以使用XGBoost,它使用增强的决策树(和随机森林)。您将训练它回答肯定的或否定的(是有道理的,否则是否)。

然后,您需要提出一些功能。您可以使用NLTK part of speech (POS) tags中的功能。句子中每种标签类型的出现次数将是一个很好的第一模型。这可以为“简易”解决方案的出色程度设定基准。

您还可以研究(单词/句子)矢量模型的实用程序,例如gensim,用于为模型创建功能。

首先,我将看到每个POS标签和XGBOOST的出现次数会发生什么。训练和测试模型,并查看其效果如何。然后考虑添加其他功能,例如位置或使用doc-2-vec作为XGBoost的输入。

最后的选择是神经网络(只有在先前的想法失败并且您拥有大量数据的情况下才推荐这样做)。如果您确实使用了神经网络,我会认为LSTM可能会有用。

您将不得不进行实验并且数据量很重要,但是您可以从简单开始,然后反复测试并添加到模型中。