Как извлечь рентную цену из текста? - PullRequest
0 голосов
/ 07 октября 2019

Для объектов недвижимости я пытаюсь извлечь арендную плату из текста описания.

Например:

"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, и получите следующее ближайшее число в €.

Я хотел бы знать, есть ли более элегантный способ. Что вы думаете об этом? :)

1 Ответ

2 голосов
/ 07 октября 2019

Попробуйте использовать разбор зависимостей. Я написал этот пример, который должен помочь вам начать:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...