2013-08-12 29 views
10

Znalazłem to poprzednie pytanie na SO: N-grams: Explanation + 2 applications. PO dał ten przykład i zapytał, czy to była słuszna:Czym dokładnie jest n Gram?

Sentence: "I live in NY." 

word level bigrams (2 for n): "# I', "I live", "live in", "in NY", 'NY #' 
character level bigrams (2 for n): "#I", "I#", "#l", "li", "iv", "ve", "e#", "#i", "in", "n#", "#N", "NY", "Y#" 

When you have this array of n-gram-parts, you drop the duplicate ones and add a counter for each part giving the frequency: 

word level bigrams: [1, 1, 1, 1, 1] 
character level bigrams: [2, 1, 1, ...] 

Ktoś w sekcji odpowiedzi potwierdziły to było poprawne, ale niestety jestem trochę zagubiony poza tym jak nie w pełni zrozumieć wszystko inne, co było powiedziany! Używam LingPipe i postępuję zgodnie z samouczkiem, w którym stwierdziłem, że powinienem wybrać wartość od 7 do 12 - ale bez podania przyczyny.

Co to jest dobra wartość nGram i jak powinienem wziąć to pod uwagę przy użyciu narzędzia takiego jak LingPipe?

Edit: To był poradnik: http://cavajohn.blogspot.co.uk/2013/05/how-to-sentiment-analysis-of-tweets.html

Odpowiedz

13

N-gramy są po prostu wszystkie kombinacje sąsiednich słów lub liter o długości n, które można znaleźć w tekście źródłowym. Na przykład, biorąc pod uwagę słowo fox, wszystkie 2 gramy (lub "bigramy") są fo i ox. Możesz także liczyć granicę słowa - która rozwinie listę od 2 gramów do #f, fo,, fo, ox i x#, gdzie # oznacza granicę słowa.

Możesz zrobić to samo na poziomie słowa. Na przykład tekst hello, world! zawiera następujące bigramy na poziomie słowa: # hello, hello world, world #.

Podstawowym celem n-gramów jest uchwycenie struktury językowej ze statystycznego punktu widzenia, np. Jaka litera lub słowo może podążać za podaną. Im dłuższy jest n-gram (im wyższa jest wartość n), tym więcej kontekstów musisz pracować. Optymalna długość naprawdę zależy od aplikacji - jeśli twoje n-gramy są zbyt krótkie, możesz nie zauważyć ważnych różnic. Z drugiej strony, jeśli są one zbyt długie, możesz nie zdobyć "ogólnej wiedzy" i trzymać się tylko konkretnych przypadków.

+0

Więc mniejsza Ngram, tym więcej porównania dokonane i dokładniejsza analiza? Próbuję zrozumieć, dlaczego w tym samouczku zasugerowano numer od 7 do 12. – user2649614

+0

Czy w związku z analizą nastrojów na tweetach powinienem wybrać numer? Tylko szczęście? – user2649614

+0

Domyślam się, że najłatwiejszym sposobem znalezienia najlepszej liczby jest eksperymentowanie. Jako przykład możesz podzielić dane treningowe na dwie połówki, ćwiczyć w pierwszej połowie, a następnie użyć liczby, która daje najlepsze wyniki z drugą. Lub spróbuj liści herbaty! – zoul

1

N-gram to n-tuple lub grupa n słów lub znaków (gramów, dla części gramatyki), które następują po sobie. Tak więc n z 3 dla słów z twojego zdania będzie jak "# I live", "Żyję w", "żyć w NY", "w NY #". Służy do tworzenia indeksu częstości słów następujących po sobie. Możesz użyć tego w Markov Chain, aby stworzyć coś, co będzie podobne do języka. Gdy zapełnisz mapowanie rozkładów grup słów lub grup znaków, możesz je zrekombinować z prawdopodobieństwem, że wynik będzie zbliżony do naturalnego, im dłuższy będzie n-gram.

Zbyt duża liczba, a wynikiem będzie słowo w słowo dla oryginału, zbyt niska liczba, a wynik będzie zbyt brudny.

+0

Czy masz rekomendację nGram do analizy tweetów? – user2649614

+0

Moja podstawowa odpowiedź brzmi: zależy to od celów w analizie. Poszukujesz popularnych tagów hash lub popularnych zwrotów lub symantycznej analizy trendów grup słów? – codethulhu

+0

Przepraszamy za opóźnienie w odpowiedzi. Zbieram wszystkie tweety za pomocą słów (manchester united, man united, man utd, mufc) i chcę przeanalizować ogólny sentyment w tych tweetach - niezależnie od tego, czy są one pozytywne czy negatywne. To tylko uproszczona wersja mojego narzędzia (mam bardziej wyrafinowaną wersję w Pythonie). Stworzyłem już klasyfikator, ale w moim stworzonym klasyfikatorze użyłem nGram z 7, bez prawdziwego zrozumienia dlaczego - jak już powiedziałem, wybrałem właśnie liczbę od 7 do 12, zgodnie z zaleceniami mojego tutoriala. – user2649614