【问题标题】:How to extract rentprice from text?如何从文本中提取rentprice?
【发布时间】:2019-10-07 09:37:17
【问题描述】:

对于房地产对象,我试图从描述文本中提取租金价格。

例如:

"Für maximalen Komfort sorgt ein Concierge Service, der den Bewohnern im Haus zur Verfügung steht. <br/>Die Wohnung ist seit dem 15.10.2002 zu einer monatlichen Nettokaltmiete in Höhe von 546,25 EUR vermietet. Es bestehen weder Sperrfrist noch Vorkaufsrecht."

重要的部分在这里

Nettokaltmiete in Höhe von 546,25 EUR

提取该信息的简单方法是什么?

注意:欧元中通常还有其他信息 - 所以我们不能只搜索欧元。

我的一个想法是:

分句。检查一个句子是否包含 EUR 或 €。检查句子是否也提到了 Miete/Jahresmiete,然后得到下一个最接近的欧元数字。

我想知道是否有更优雅的方式。您对此有何看法? :)

【问题讨论】:

    标签: nlp text-extraction


    【解决方案1】:

    尝试使用依赖解析。 我写了这个例子,应该让你开始:

    import spacy
    nlp = spacy.load("de_core_news_sm")
    s = "Die Wohnung ist seit dem 15.10.2002 zu einer monatlichen Nettokaltmiete in Höhe von 546,25 EUR vermietet."
    doc = nlp(s)
    
    try:
        l = [t for t in doc if 'miete' in t.text.lower() and t.pos_ == "NOUN"]
    
        if l:
            rent = l[0]
            subtree = [t for t in rent.subtree]
            euro = [t for t in subtree if t.text == "EUR" or t.text == "€"] 
            if euro:
                price = euro[0].nbor(-1)
                if price.like_num == True:
                    print(rent, ':', price)
    except:
        pass
    
    
    

    输出:

    Nettokaltmiete : 546,25

    【讨论】:

    • 感谢这个伟大的提示。一个快速的问题 - 这与带有键值的 NER 相比如何?因为我看到例如“LightTag.io”,您可以执行 NER 并为每个键分配一个值并训练一个模型。
    • 如果您有大量标记数据,那么训练模型可能是一个好方法,如果您没有大量标记数据,那么您必须使用手工制作的规则,例如以上。
    • 啊,太好了 - 感谢您的宝贵意见!我有很多数据,所以宁愿去训练模型。不过,您的方法对我有很大帮助!
    • 你能给我一个关键字吗?这怎么叫 - 拥有具有关键价值的 NE?我找到它一次,但很难搜索
    • 我认为您在谈论的是标记实体的标签。看看这里:[spacy.io/usage/linguistic-features#named-entities]
    猜你喜欢
    • 2019-12-05
    • 2023-04-02
    • 1970-01-01
    • 2010-09-22
    • 2014-02-05
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多