price_detector_fa
extracts product/price/amount tuples from Persian text using rule-based methods.
- Feraidoon Mehri
- Fahime Hosseini
- Soroush Vafaie Tabar
This library does not work on Windows.
- Run the following in this project’s directory:
pip install -e . bash install.sh
- Install
graphviz
using your OS package manager.
from price_detector_fa.samples import *
from price_detector_fa.utils import *
from price_detector_fa.extractors import *
from price_detector_fa.preprocessing import *
from price_detector_fa.hardcoded import *
def matching_extract(sample):
output = []
for s in sentence_tokenizer.tokenize(sample):
s_tokens, s_spans = preprocess(s)
s_parsed = parser.parse(s_tokens)
s_spans = find_spans(s_parsed, s_spans)
matchings = all_extract(s_parsed)
output = output + list(
matching_show(matching, s_spans) for matching in matchings
)
return output
import pprint
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(matching_extract("عباسآقا ده فروند شتر را به بهای پنجاه قران خریداری نموده و و خوشال شدند"))
[ { 'price_amount': ['مقدار: پنجاه'], 'price_unit': ['مقدار: قران'], 'product_amount': ['مقدار: ده'], 'product_name': 'مقدار: شتر', 'product_name_span': (18, 21), 'product_unit': ['مقدار: فروند']}]
pp.pprint(matching_extract("با سه هزار تومان میشود یک عدد بادکنک خرید."))
[ { 'price_amount': ['مقدار: سه هزار'], 'price_unit': ['مقدار: تومان'], 'product_amount': ['مقدار: یک'], 'product_name': 'مقدار: بادکنک خرید .', 'product_name_span': (30, 42), 'product_unit': ['مقدار: عدد']}]
print(sample_16_2)
pp.pprint(matching_extract(sample_16_2))
قیمت هندوانه ارزان شد و قیمت هر گرم طلا هزار تومان است [ { 'price_amount': ['مقدار: هزار'], 'price_unit': ['مقدار: تومان'], 'product_amount': ['مقدار: یک'], 'product_name': 'مقدار: طلا', 'product_name_span': (37, 40), 'product_unit': ['مقدار: گرم']}]