2016-06-14 15 views
0

Мне нужна помощь в группировке текстов. У меня есть список таких торговцев, и мы видим, что первые несколько принадлежат CENTURYLINK рядом с SMART ATT .. есть способ сгруппировать/наклеить эти тексты с одной этикетке или классифицировать эти тексты в соответствии с бассейном они попадают ..Текст, группирующий текст

заранее спасибо

001 CenturyLink IREP

003 CenturyLink МОЙ СЧЕТ

003-ClearTalk Беспроводной

004 CenturyLink IVR

005 CenturyLink повторяющегося

006 CenturyLink WIFI

007 CenturyLink КАБЕЛЬ

111 SMART ATT

112 SMART ATT

113 - SMART - АТТ

114 SMART ATT

120 - SMART - АТТ

131 - SMART - АТТ

137 - SMART - АТТ

беспроводном Amery

беспроводной АННА

A WIRELESS APTOS

беспроводной АРКАДИЯ

беспроводной ARNOLDS PAR

беспроводной ASHLAND

беспроводной АФИНЫ

ответ

0

У вас есть несколько вариантов. Среди наиболее простого будет соответствовать поставщику подстроку, следующим образом:

import java.util.Arrays; 
import java.util.LinkedList; 
import java.util.List; 
import java.util.Map; 
import java.util.TreeMap; 
import java.util.stream.Collectors; 

public class GroupVendors { 
    public static void main(final String[] args) { 
     final List<String> vendors = Arrays.asList(
      "CENTURYLINK", 
      "SMART", 
      "ATT", 
      "A WIRELESS"); 

     final List<String> uncategorizedVendors = Arrays.asList(
      "001 CENTURYLINK IREP", 
      "003 CENTURYLINK MY ACCOUNT", 
      "003-ClearTalk Wireless", 
      "004 CENTURYLINK IVR", 
      "005 CENTURYLINK RECURRING", 
      "006 CENTURYLINK WIFI", 
      "007 CENTURYLINK CABLE", 
      "111 SMART ATT", 
      "112 SMART ATT", 
      "113 - SMART - ATT", 
      "114 SMART ATT", 
      "120 - SMART - ATT", 
      "131 - SMART - ATT", 
      "137 - SMART - ATT", 
      "A WIRELESS AMERY", 
      "A WIRELESS ANNA", 
      "A WIRELESS APTOS", 
      "A WIRELESS ARCADIA", 
      "A WIRELESS ARNOLDS PAR", 
      "A WIRELESS ASHLAND", 
      "A WIRELESS ATHENS"); 

     final Map<String, List<String>> categorizedVendors = new TreeMap<>(); 

     for (final String vendor : vendors) { 
      categorizedVendors.put(vendor, new LinkedList<String>()); 
     } 

     for (final String vendor : uncategorizedVendors) { 
      for (final Map.Entry<String, List<String>> entry : categorizedVendors.entrySet()) { 
       final String category = entry.getKey(); 
       if (vendor.contains(category)) { 
        final List<String> bin = entry.getValue(); 
        bin.add(vendor); 
       } 
      } 
     } 

     for (final Map.Entry<String, List<String>> entry : categorizedVendors.entrySet()) { 
      final String category = entry.getKey(); 
      final List<String> bin = entry.getValue(); 
      System.out.printf("vendors(\"%s\") = {%n", category); 
      if (!bin.isEmpty()) { 
       System.out.printf(" %s%n", 
        bin.stream() 
         .map((vendor) -> String.format("\"%s\"", vendor)) 
         .collect(Collectors.joining(",\n "))); 
      } 
      System.out.println("}"); 
     } 
    } 
} 

Sample пробег:

% java GroupVendors 
vendors("A WIRELESS") = { 
    "A WIRELESS AMERY", 
    "A WIRELESS ANNA", 
    "A WIRELESS APTOS", 
    "A WIRELESS ARCADIA", 
    "A WIRELESS ARNOLDS PAR", 
    "A WIRELESS ASHLAND", 
    "A WIRELESS ATHENS" 
} 
vendors("ATT") = { 
    "111 SMART ATT", 
    "112 SMART ATT", 
    "113 - SMART - ATT", 
    "114 SMART ATT", 
    "120 - SMART - ATT", 
    "131 - SMART - ATT", 
    "137 - SMART - ATT" 
} 
vendors("CENTURYLINK") = { 
    "001 CENTURYLINK IREP", 
    "003 CENTURYLINK MY ACCOUNT", 
    "004 CENTURYLINK IVR", 
    "005 CENTURYLINK RECURRING", 
    "006 CENTURYLINK WIFI", 
    "007 CENTURYLINK CABLE" 
} 
vendors("SMART") = { 
    "111 SMART ATT", 
    "112 SMART ATT", 
    "113 - SMART - ATT", 
    "114 SMART ATT", 
    "120 - SMART - ATT", 
    "131 - SMART - ATT", 
    "137 - SMART - ATT" 
} 

Я сделал предположение, что список категорий поставщиков вы заинтересованы в том, «CenturyLink» , "SMART", "ATT" и "WIRELESS". Это приводит к категоризации всех записей, содержащих как «SMART», так и «ATT» в обеих ячейках. Если вы хотите, чтобы каждый поставщик классифицировался в одном бункере, вам нужно будет решить, какой поставщик вы предпочитаете, когда категории являются избыточными.