2012-08-30 10 views

Odpowiedz

10

Zamówienie biblioteki inflect 0.2.4.

zaznaczenia 0.2.4

prawidłowo generuje liczby mnogiej liczby pojedynczej rzeczowników porządkowe, nieokreślone artykułów; konwertuj liczby na słowa

+1

To fajne. Nie mam pojęcia. – David

+5

@Ashwini: inflect.py może * generować * liczbę mnogą, ale czy może * wykryć * liczbę mnogą? – Hugo

2

Nie mówisz, że jeśli Twoim problemem są pojedyncze słowa lub słowa w kontekście zdań w języku angielskim. Na przykład "owca" może być pojedyncza lub mnoga. Jednakże:

owiec był w zakresie

jest pojedyncza i

owce w dziedzinie

w liczbie mnogiej.

Do tego ostatniego potrzebujesz znacznika części mowy, który wskaże role rzeczowników w zdaniu. Istnieje wiele darmowych i komercyjnych i Wikipedia ma an excellent list. NLTK jest prawdopodobnie naturalnym wyborem dla Pythona.

Jeśli masz tylko wyodrębnione słowa, najlepiej jest odwołać się do wielu słowników (takich jak Wordnet, które będą wskazywać formy liczby pojedynczej i mnogiej rzeczowników).

5

Ashwini odniósł się do użytecznej biblioteki inflect, ale nie wyjaśnił, jak sprawdzić, czy dane słowo jest w liczbie mnogiej czy w liczbie pojedynczej.

Jeśli wiesz, że słowo jest albo w liczbie pojedynczej lub mnogiej można użyć:

singular_noun(word) 

ten powróci False jeśli słowo nie jest liczba mnoga, więc twoje słowo teoretycznie powinien być w liczbie pojedynczej.

Zwróć uwagę na niedociągnięcia pojawiające się w moich przykładach, jeśli chodzi o klasyczne formy liczby mnogiej, formy, które mogą być w liczbie pojedynczej lub mnogiej, oraz fakt, że zwrócą one fałsz dla nierozpoznanych formularzy w ogóle.

import inflect 
inflect = inflect.engine() 

english_words = ["hat", "hats", 
       "hero", "heroes", 
       "cherry", "cherries", 
       "dish", "dishes", 
       "stadium", "stadia", "stadiums", 
       "mitochondrion", "mitochondria", 
       "sheep", "a sheep", "the sheep", 
       "whjkjhkjh", "msipelling"] 

for en in english_words: 
    if inflect.singular_noun(en) is False: 
     print (en, "is singular") 
    else: 
     print (en, "is plural") 

>>> 
hat is singular 
hats is plural 
hero is singular 
heroes is plural 
cherry is singular 
cherries is plural 
dish is singular 
dishes is plural 
stadium is singular 
stadia is singular 
stadiums is plural 
mitochondrion is singular 
mitochondria is singular 
sheep is plural 
a sheep is plural 
the sheep is plural 
whjkjhkjh is singular 
+0

'some_boolean_value is False' jest wzorcem przeciwnym, zamiast tego użyj wartości' not some_boolean_value' –

Powiązane problemy