Skip to content

Commit

Permalink
updated LookupDataPool to use LookupData.script if not 'default'. add…
Browse files Browse the repository at this point in the history
…ed tests for cyrillic. updated usage.md to show use of script
  • Loading branch information
iwpnd committed Mar 2, 2020
1 parent 213d8ae commit c3bb7ba
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 1 deletion.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ untitled.txt
.DS_Store
.vscode/
TODO
.jekyll-cache/
_site/


# C extensions
Expand Down
48 changes: 47 additions & 1 deletion docs/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ geotext.extract(input_text=input_text, span_info=True)
}
```

### Bring your own data
### Bring your own data (default script)

```python
from flashgeotext.geotext import GeoText
Expand Down Expand Up @@ -88,6 +88,52 @@ geotext.extract(text, span_info=False)
}
```

### Bring your own data (with script)

```python
from flashgeotext.geotext import GeoText
from flashgeotext.lookup import LookupData

cyrillic_city = {"Нижневартовск": ["Нижневартовск"]}

text = """
В Нижневартовском районе ограничили грузоподъемность
на ледовых переправах Проехать по ледовой переправе
сможет только транспорт весом не более 5 тонн.
В связи с потеплением в Нижневартовском районе
введено ограничение грузоподъемности на ледовых переправах.
По направлению Нижневартовск - Вампугол – Былино, а
также Белорусский - Ларьяк , Ларьяк - Чехломей - Большой Ларьяк,
Былино - Зайцева Речка снижена грузоподъемность до 5 тонн.
Лед на реках еще вполне толстый и переправа пригодна для
эксплуатации, однако зимник начал подтаивать,
орогу развезло. Потому принято решение снизить грузоподъемность
на нём до 5 тонн, сообщает ОТРК «Югра».
Всего на реках Югры работают 89 ледовых переправ.
Их обычная грузоподъемность от 15 до 30 тонн. Отметим,
что традиционно в середине апреля закрываются для движения
автотранспорта все ледовые переправы.
"""

lookup_cyrillic_city = LookupData(
name="cyrillic",
data=cyrillic_city,
script="cyrillic"
)

geotext = GeoText(use_demo_data=False)
geotext.add(lookup_cyrillic_city)

print(len(geotext.pool))
>> 1

geotext.extract(text, span_info=False)

>> {'cyrillic': {'Нижневартовск': {'count': 1}}}
```

Actually the city `Нижневартовск` is present three times in the text, but we did not specify `Нижневартовском` to be the same as `Нижневартовск`.

### Data handling

#### add data to pool
Expand Down
24 changes: 24 additions & 0 deletions tests/integration/test_geotext_extractor.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import pytest

from flashgeotext.geotext import GeoText
from flashgeotext.lookup import LookupData
from flashgeotext.lookup import MissingLookupDataError

text = "Berlin ist die Hauptstadt von Deutschland. Berlin ist nicht haesslich, aber auch nicht sonderlich schoen."
Expand Down Expand Up @@ -154,3 +155,26 @@ def test_geotext_extract_countries(nr, text, expected_countries, geotext):
output = geotext.extract(input_text=text, span_info=False)

assert all([country in output["countries"] for country in expected_countries])


def test_geotext_with_script_added_to_non_word_boundaries():
cyrillic = LookupData(
name="test_1", data={"Нижневартовск": ["Нижневартовск"]}, script="cyrillic"
)
geotext = GeoText(use_demo_data=False)
geotext.add(cyrillic)

text = """
В Нижневартовском районе ограничили грузоподъемность на ледовых переправах
Проехать по ледовой переправе сможет только транспорт весом не более 5 тонн.
В связи с потеплением в Нижневартовском районе введено ограничение грузоподъемности на ледовых переправах.
По направлению Нижневартовск - Вампугол – Былино, а также Белорусский - Ларьяк , Ларьяк -
Чехломей - Большой Ларьяк, Былино - Зайцева Речка снижена грузоподъемность до 5 тонн.
Лед на реках еще вполне толстый и переправа пригодна для эксплуатации, однако зимник начал подтаивать,
орогу развезло. Потому принято решение снизить грузоподъемность на нём до 5 тонн, сообщает ОТРК «Югра».
Всего на реках Югры работают 89 ледовых переправ. Их обычная грузоподъемность от 15 до 30 тонн. Отметим,
что традиционно в середине апреля закрываются для движения автотранспорта все ледовые переправы.
"""

result = geotext.extract(text, span_info=False)
result["test_1"]["Нижневартовск"]["count"] == 1
15 changes: 15 additions & 0 deletions tests/unit/test_lookup_data_pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from flashgeotext.lookup import LookupDataPool
from flashgeotext.lookup import LookupDuplicateError
from flashgeotext.settings import DEMODATA_CITIES
from flashgeotext.settings import SCRIPTS


def test_lookup_data_pool(test_data_cities):
Expand Down Expand Up @@ -68,6 +69,20 @@ def test_lookup_data_pool_remove_all_from_pool(test_data_cities):
assert not processor.pool


def test_lookup_data_pool_script_non_word_boundaries(test_data_cities):
lookup = LookupData(name="cities", data=test_data_cities, script="latin")

processor = LookupDataPool()
processor.add(lookup)

assert all(
[
char in processor.pool["cities"].non_word_boundaries
for char in SCRIPTS["latin"]["chars"]
]
)


def test_load_data_from_file():
cities = load_data_from_file(DEMODATA_CITIES)
assert cities
Expand Down

0 comments on commit c3bb7ba

Please sign in to comment.