Na pewno nie jest to problem trywialny.
Jeśli chcesz badać podobieństwa dowolnych ciągów i to podobieństwo semantyczne, to jest to wrecz bardzo trudny problem.
Jesli natomiast ograniczasz sie do listy wyrazen na temat sprzetu komputerowego, to na pewno da sie to lepiej lub gorzej rozwiazac.
Na pewno trzeba by stworzyc pewna baze wiedzy, ktorej program by uzywal (no chyba ze chcesz recznie oznaczyc jakas reprezentatywna [i raczej spora] probke ciagow i uzyc jakiejs metody mechanicznego uczenia, ale to musialbys troche teorii zlapac ).
Najpierw trzeba oczywiscie umiec podzielic zdanie na ciag tokenow. W tym momencie trzeba umiec np sparsowac "Sata II" jako jeden token a nie dwa osobne. Na tym etapie mozna tez dokonac jakiejs filtracji slow niemajacych znaczenia ( np polskie slowa w tych zdaniach co podales nie maja zadnego znaczenia ). Kolejnym etapem jest pewna normalizacja otrzymanych tokenow - np wiadomo ze "32 MB" "32MB" "32mb" pewnie znaczy to samo, choc roznie zapisane ( i w jednym przypadku blednie ).
Nastepnym ( i tym najtrudniejszym ) etapem jest kwalifikacja. Kazdemu tokenowi nalezy przypisac grupe, do ktorej nalezy i tutaj potrzebna bedzie jakas baza wiedzy + pewien zbior reguł. Dodatkowo rozne kategorie moga miec przypisane rozne wagi - np wiadomo ze cos co wyglada jak St389239ASd jest pewnie jakims oznaczeniem konkretnego modelu i jest duzo wazniejsze niz "32MB"
Majac juz dane w takiej formie nalezy nastepnie stworzyc funkcja, ktora okresla miare podobienstwa dwoch zbiorow zkwalifikowanych tokenow. Tu tez jest troche zabawy, bo trzeba zastanowic sie nad sytuacjami, gdzie w jednym zbiorze wystepuje np informacja z kategorii "numer modelu" a w innym nie. Na tym etapie tez bardzo wazna jest informacja o wagach przypisanych do poszczegolnych grup.
Ogolnie troche zabawy, ale mysle, ze zadanie jest jak najbardziej wykonywalne.