2010-09-05 10 views

Odpowiedz

11

Jeśli trzeba znaleźć ostatnie słowo w ciągu, a następnie zrobić to:

m/ 
    (\w+)  (?# Match a word, store its value into pattern memory) 

    [.!?]?  (?# Some strings might hold a sentence. If so, this) 
       (?# component will match zero or one punctuation) 
       (?# characters) 

    \s*  (?# Match trailing whitespace using the * because there) 
       (?# might not be any) 

    $   (?# Anchor the match to the end of the string) 
/x; 

Po tym oświadczeniu, $ 1 odbędzie się ostatnie słowo w łańcuchu. Być może będziesz musiał rozszerzyć klasę znaków, [.!?], Dodając więcej znaków interpunkcyjnych.

w PHP:

<?php 

$str = 'MiloCold is Neat'; 
$str_Pattern = '/[^ ]*$/'; 

preg_match($str_Pattern, $str, $results); 

// Prints "Neat", but you can just assign it to a variable. 
print $results[0]; 

?> 
+0

jest sposób, aby to zrobić, aby użyć zwykłego wyrażenia, takiego jak kompaktowy w jednym? ponieważ mam funkcję, której używam i po prostu nie mogę uzyskać regularnego wyrażenia do pracy, to jest pobieranie pełnych zatrzymań i białych przestrzeni i nic więcej – Sam

3

W ogóle nie można prawidłowo analizować tekstu angielskiego z wyrażeń regularnych.

Najlepsze, co można zrobić, to poszukać interpunkcji, która zwykle kończy zdanie, ale niestety nie jest to gwarancja. Na przykład tekst Mr. Bloggs jest tutaj. Chcesz z nim porozmawiać? zawiera dwa okresy, które mają różne znaczenia. Nie ma sposobu na wyrażenie regularne, aby odróżnić dwa zastosowania okresu.

Sugerowałbym zamiast tego, aby spojrzeć na bibliotekę parsowania języka naturalnego. Na przykład Stanford Parser nie ma problemów w ogóle prawidłowo parsowania powyższy tekst w dwóch zdaniach:

 
Mr./NNP Bloggs/NNP is/VBZ here/RB ./. 
Do/VBP you/PRP want/VB to/TO talk/VB to/TO him/PRP ?/. 

Istnieje wiele innych swobodnie dostępnych bibliotek NLP, że można użyć też nie jestem podpisujące się, że jeden produkt w w szczególności - jest to tylko przykład do wykazania, że ​​możliwe jest przetwarzanie tekstu na zdania z dość wysoką niezawodnością. Zauważ jednak, że nawet biblioteka analizowania języka naturalnego będzie od czasu do czasu popełniała błąd - prawidłowe przetwarzanie języków ludzkich jest trudne.

+0

tak, miałem zamiar zrobić to przed każdym pełnym zatrzymaniem, ale masz rację wybrałoby do góry panu czego nie chcę – Sam

+1

Oryginalny plakat nie określał angielskiego. Niektóre języki nie umieszczają spacji między słowami, więc zastanawiam się, czy program może wybrać ostatnie słowo. –

+0

prawda, nigdy nie myślałem o tym, przypuszczam, że nie – Sam

Powiązane problemy