2010-09-21 9 views
10

Tworzę aplikację w .NET.Wyrażanie zdań przy użyciu tezaurusa

Mam uruchomioną aplikację o nazwie http://www.spinnerchief.com/. Zrobiłem to, czego potrzebowałem, ale nie dostałem żadnej pomocy od Google. Potrzebuję funkcjonalne wyniki dla mojej aplikacji, gdzie użytkownicy mogą dać jedno zdanie, a następnie użytkownik może uzyskać to samo zdanie, ale mają inaczej sformułowane.

Oto przykład tego, czego chcę.

Załóżmy, że umieściłem zdanie "Pankaj to dobry człowiek". Moc wyjściowa powinna być podobna do następującej:

Pankaj jest wspaniałą osobą.
Pankaj to wspaniały człowiek.
Pankaj jest akceptowalnym facetem.
Pankaj to wspaniały koleś.
Pankaj jest wspaniałym mężczyzną.
Pankaj jest dobrym człowiekiem.
Pankaj jest wspaniały dżentelmen

+1

+1 za sprytny sposób, aby zdobyć gogle, aby myśleć, że jesteś cool, gdy następnym razem się gogle! –

Odpowiedz

-3

Nie wiem nic o .NET wiem, ale należy spojrzeć na użyciu funkcji słownika (jestem pewien, że jest jeden, albo przynajmniej biblioteka, która usprawnia proces jeśli nie ma).

Następnie należy przejść przez ciąg znaków i pominąć słowa typu "jest" lub "a". Tylko przyjmowanie słów, które chcesz mieć synonimy.

Po tym dość prosta pętla wypluwa twoje zdania.

Powodzenia.

+1

Co masz na myśli przez funkcję słownika? –

7

Aby zrobić to poprawnie dla dowolnego zdania, należy wykonać analizę języka naturalnego zdania źródłowego. Możesz zajrzeć do SharpNLP library - jest to darmowa biblioteka narzędzi do przetwarzania języka naturalnego dla C#/.NET.

Jeśli szukasz prostszego podejścia, musisz być gotów poświęcić w pewnym stopniu poprawność. Na przykład można utworzyć słownik słów wyzwalaczy, które - gdy pojawiają się w zdaniu - zostaną zastąpione synonimami z tezaurusa. Problem z tym podejściem polega na upewnieniu się, że zastąpiłeś słowo równoważną częścią mowy. W języku angielskim niektóre słowa mogą być różnymi częściami mowy (czasownik, przymiotnik, przysłówek itd.) Na podstawie kontekstowego użycia w zdaniu.

Dodatkowa uwaga, na którą musisz zwrócić uwagę (jeśli nie korzystasz z biblioteki NLP). W większości języków niektóre części mowy są skoniugowane/zmodyfikowane (czasowniki w języku angielskim) na podstawie tematu, którego dotyczą (lub obiektu, głośnika lub czasu zdania).

Jeśli chcesz tylko zastąpić przymiotniki (jak w twoim przykładzie), podejście do używania słów wyzwalaczy może zadziałać - ale nie da się go łatwo rozszerzyć. Zanim zrobisz cokolwiek, proponuję, abyś jasno zdefiniował wymagania i reguły dla swojej domeny problemowej ... i używał tego, aby zdecydować, którą trasę wybrać.

3

W tym celu najlepiej używać WordNet i hiponimicznych relacji hipnotycznych. Istnieje biblioteka WordNet .Net. Dla każdego słowa, które chcesz zmienić, możesz albo dostać hypernu (to znaczy dla osoby, hypernym oznacza "osoba jest rodzajem ...") lub hiponimu ("X jest rodzajem osoby"). Następnie zamień słowo, które naprzemiennie napotykasz.

Będziesz chciał upewnić się, że masz prawidłową część mowy (tj. Rzeczownik, przymiotnik, czasownik ...) i istnieje również problem zmysłów, które mogą wprowadzić niepożądane zmiany (sens 1 to Najpopularniejszy).

Powiązane problemy