如何在python中使用SUTime,NLP以提取日期

时间:2015-10-25 11:38:21

标签: python nlp extraction

对于日期提取,我尝试使用NLTK(自然语言处理的一部分) - 正则表达式,unigram。使用这些我可以提取日期,但是当我为同一日期提取器传递不同的消息时,它无法识别日期格式。当我进一步谷歌搜索它时,我遇到了SUTime提取日期。

任何人都可以告诉我们如何安装SUTime并使用python从文本消息中提取日期吗?

有没有其他方法可以使用python从文本消息中提取日期?

(注意:文本消息不是机器生成的。因此日期格式在消息之间变化)

示例: 短信:“10/10/2015 4:20 CST。在Belendoor航站楼UNL从日期:2015年10月12日开始时间:美国东部时间下午1:30至07:30。” 输出:

  

Date1:​​10/10/2015 04:20:00 CST   日期2:10/12/2015 13:30   日期3:10/12/2015 19:30 EST

3 个答案:

答案 0 :(得分:0)

SUTime在JVM上运行。所以我不确定你是否可以无缝地从Python中调用它。据我所知,Python没有SUTime端口。

答案 1 :(得分:0)

现在有一个python wrapper for SUTime

以下内容来自README。要安装:

pip install sutime
# use package pom.xml to install all Java dependencies via Maven into ./jars
mvn dependency:copy-dependencies -DoutputDirectory=./jars

小用例:

import os
import json
from sutime import SUTime

if __name__ == '__main__':
    test_case = u'I need a desk for tomorrow from 2pm to 3pm'

    jar_files = os.path.join(os.path.dirname(__file__), 'jars')
    sutime = SUTime(jars=jar_files, mark_time_ranges=True)

    print(json.dumps(sutime.parse(test_case), sort_keys=True, indent=4))

输出:

[
    {
        "end": 26,
        "start": 18,
        "text": "tomorrow",
        "type": "DATE",
        "value": "2016-10-14"
    },
    {
        "end": 42,
        "start": 27,
        "text": "from 2pm to 3pm",
        "type": "DURATION",
        "value": {
            "begin": "T14:00",
            "end": "T15:00"
        }
    }
]

答案 2 :(得分:0)

现在 Python 包装器可用于 Sutime。

请参考以下链接

https://github.com/FraBle/python-sutime

请按照以下步骤操作: 1.pip安装sutime 2.mvn依赖:copy-dependencies -DoutputDirectory=./jars -f $(python3 -c 'import importlib; import pathlib; print(pathlib.Path(importlib.util.find_spec("sutime").origin).parent / "pom.xml")')

你会得到一个运行代码!!!!!!!!!