java简单实现季节,性别分词处理

本文介绍了一种通过分析淘宝商品标题来识别季节和性别的方法。该方法使用字符串匹配技术从标题中提取关键信息,并根据这些信息判断商品所属的季节及目标用户性别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

淘宝里面,每个宝贝都有一个标题,根据标题来分词,区分出季节和性别,分别写了两个方法,供大家参考。

public int season(String str)
	{
		String dest = "";
		Pattern p = Pattern.compile("\\s*|\t|\r|\n");
		Matcher m = p.matcher(str);
		dest = m.replaceAll("");
		System.out.println(dest);
		String ok=null;
		for(int i=0;i<dest.length();i++)
		{
			//System.out.println("i="+i);
			if(i>=dest.length()-2)
				ok=dest.substring(i);
			else
			{
				ok=dest.substring(i,i+2);
			}
			//System.out.println(ok);
			switch(ok)
			{				
				case "冬日":
					flag= 4;
					break;
				case "夏日":
					flag= 2;
					break;
				case "春季":
					if(i>=1&&dest.charAt(i-1)=='秋')
					flag=5;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=9;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=6;
				else
					flag= 1;
					break;
				case "夏季":
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=6;
				else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=11;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=8;
				else
					flag= 2;
					break;
				case "秋季":
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=5;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=10;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=7;
				else
					flag= 3;
					break;
				case "冬季":
				if(i>=1&&dest.charAt(i-1)=='春')
					flag=9;
				else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=7;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=8;
				else
					flag= 4;
				break;
				case "春款":
					if(i>=1&&dest.charAt(i-1)=='秋')
					flag=5;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=9;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=6;
				else
					flag= 1;
					break;
				case "夏款":
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=6;
				else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=11;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=8;
				else
					flag= 2;
					break;
				case "秋款":
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=5;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=10;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=7;
				else
					flag= 3;
					break;
				case "冬款":
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=9;
				else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=7;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=8;
				else
					flag= 4;
				case "春秋":
					if(i<=dest.length()-3&&dest.charAt(i+2)=='冬')
				{
					flag=9;
					return 9;
				}
				else
					flag= 5;
					break;
				case "秋春":
					flag= 5;
					break;
				case "春夏":
					if(i<=dest.length()-3&&dest.charAt(i+2)=='秋')
				{
					flag=11;
					return 11;
				}
				else
					flag= 6;
					break;
				case "夏春":
					flag= 6;
					break;
				case "秋冬":
					flag= 7;
					break;
				case "冬秋":
					flag= 7;
					break;
				case "冬夏":
					flag= 8;
					break;
				case "夏冬":
					flag= 8;
					break;
				case "春冬":
					flag= 9;
					break;
				case "冬春":
					flag= 9;
					break;
				case "夏秋":
					flag= 10;
					break;
				case "秋夏":
					flag= 10;
					break;
				case "春天":
				if(i>=1&&dest.charAt(i-1)=='秋')
					flag=5;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=9;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=6;
				else
					flag= 1;
					break;
				case "夏天":
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=6;
				else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=11;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=8;
				else
					flag= 2;
					break;
				case "秋天":
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=5;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=10;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=7;
				else
					flag= 3;
					break;
				case "冬天":
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=9;
				else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=7;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=8;
				else
					flag= 4;
					break;
				case "春装":
					if(i>=1&&dest.charAt(i-1)=='秋')
					flag=5;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=9;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=6;
				else
					flag= 1;
					break;
				case "夏装":
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=6;
				else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=11;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=8;
				else
					flag= 2;
					break;
				case "秋装":
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=5;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=10;
				else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=7;
				else
					flag= 3;
					break;
				case "冬装":
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=9;
				else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=7;
				else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=8;
				else
					flag= 4;
					break;
				default:
					break;
			}
		}
		System.out.println("flag="+flag);
		if(flag==1)
			return 1;
		else if(flag==2)
			return 2;
		else if(flag==3)
			return 3;
		else if(flag==4)
			return 4;
		else if(flag==5)
			return 5;
		else if(flag==6)
			return 6;
		else if(flag==7)
			return 7;
		else if(flag==8)
			return 8;
		else if(flag==9)
			return 9;
		else if(flag==10)
			return 10;
		else
			return 99;
		
	}
	public int sex(String str)
	{
		String dest = "";	
		Pattern p = Pattern.compile("\\s*|\t|\r|\n");
		Matcher m = p.matcher(str);
		dest = m.replaceAll("");
			
		String ok=null;
		boolean b=false;
		System.out.println(dest);
		for(int i=0;i<dest.length();i++)
		{
			if(i==dest.length()-1)
				ok=dest.substring(i);
			else
			ok=dest.substring(i,i+1);
			switch(ok)
			{
				case "男":
					for(int j=0;j<dest.length();j++)
				{
					char c=dest.charAt(j);
					if(c=='女')
						b=true;
				}
					if(i<=dest.length()-2&&b)
					return 3;			
				else
					flag=1;
					break;
				case "女":
					for(int j=0;j<dest.length();j++)
				{
					char c=dest.charAt(j);
					if(c=='男')
						b=true;
				}
					if(i<=dest.length()-2&&b)
					return 3;
				else
					flag=2;
					break;
				case "高":
					if(i<=dest.length()-3&&dest.charAt(i+1)=='富'&&dest.charAt(i+2)=='帅')
					flag=1;
					if(i<=dest.length()-3&&dest.charAt(i=1)=='帅'&&dest.charAt(i+2)=='富')
					flag=1;
				break;
				case "白":
					if(i<=dest.length()-3&&dest.charAt(i+1)=='富'&&dest.charAt(i+2)=='美')
					flag=2;
					if(i<=dest.length()-3&&dest.charAt(i+1)=='美'&&dest.charAt(i+2)=='富')
					flag=2;
				break;
				case "萝":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='莉')
					flag=2;
				break;
				case "罗":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='莉')
					flag=2;
				break;
				case "靓":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='妹')
					flag=2;
				break;
				case "辣":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='妹')
					flag=2;
				break;
				case "正":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='太')
					flag=1;
				break;
				case "屌":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='丝')
					flag=1;
				break;
				case "闺":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='蜜')
					flag=2;
				break;
				case "贵":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='妇')
					flag=2;
				break;
				case "美":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='妞')
					flag=2;
				break;
				case "帅":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='哥')
					flag=1;
				break;
				case "长":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='裙')
					flag=2;
				break;
				case "短":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='裙')
					flag=2;
				break;
				case "胸":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='罩')
					flag=2;
				break;
				case "文":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='胸')
					flag=2;
				break;
				case "少":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='妇')
					flag=2;

				case "御":
					if(i<=dest.length()-2&&dest.charAt(i+1)=='姐')
					flag=2;
				break;
					case "连":
					if(i<=dest.length()-3&&dest.charAt(i+1)=='衣'&&dest.charAt(i+2)=='裙')
					flag=1;
				break;

			}
		
		}
		if(flag==1)
			return 1;
		else if(flag==2)
			return 2;
		else
			return 3;
			
	}

由于switch里面用String类型做参数是JDK7才支持的,所以我也写了一个支持其他版本的代码,用if-else代替switch

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class divide 
{
	int flag=0;
	public int getSeason(String str)
	{
		String dest = "";
		Pattern p = Pattern.compile("\\s*|\t|\r|\n");
		Matcher m = p.matcher(str);
		dest = m.replaceAll("");
		System.out.println(dest);
		String ok=null;
		for(int i=0;i<dest.length();i++)
		{
			//System.out.println("i="+i);
			if(i>=dest.length()-2)
				ok=dest.substring(i);
			else
			{
				ok=dest.substring(i,i+2);
			}
			//System.out.println(ok);
			
							
				if(ok.equals("冬日"))
					flag= 4;
				if(ok.equals("夏日"))
					flag= 2;
				if(ok.equals("春季"))
				{
					if(i>=1&&dest.charAt(i-1)=='秋')
					flag=5;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=9;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=6;				
					else
					flag= 1;
				}
				if(ok.equals("夏季"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=6;
					else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=11;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=8;				
				    else
					flag= 2;
				}
				if(ok.equals("秋季"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=5;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=10;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=7;
				
					else
					flag= 3;
				}

				if(ok.equals("冬季"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')				
					flag=9;
					else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=7;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=8;				
					else
					flag= 4;
				}
				
				if(ok.equals("春款"))
				{
					if(i>=1&&dest.charAt(i-1)=='秋')
					flag=5;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=9;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=6;
				
				else
					flag= 1;
				}
				if(ok.equals("夏款"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=6;
					else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=11;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=8;
				
				else
					flag= 2;
				}
				if(ok.equals("秋款"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=5;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=10;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=7;
					else
					flag= 3;
				}
			
				if(ok.equals("冬款"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=9;
					else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=7;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=8;
					else
					flag= 4;
				}
				if(ok.equals("春秋"))
				{
					if(i<=dest.length()-3&&dest.charAt(i+2)=='冬')
					{
						flag=9;
						return 9;
					}
					else
					flag= 5;
				}
					if(ok.equals("秋春"))
					flag= 5;
					if(ok.equals("春夏"))
					{
						if(i<=dest.length()-3&&dest.charAt(i+2)=='秋')							
						{
							flag=11;
							return 11;
						}
					else
					flag= 6;
				}
					
				if(ok.equals("夏春"))
					flag= 6;
				if(ok.equals("秋冬"))
					flag= 7;
				if(ok.equals("冬秋"))
					flag= 7;
				if(ok.equals("冬夏"))
					flag= 8;
				if(ok.equals("夏冬"))
					flag= 8;			
				if(ok.equals("春冬"))
					flag= 9;			
				if(ok.equals("冬春"))
					flag= 9;
				if(ok.equals("夏秋"))
					flag= 10;
				if(ok.equals("秋夏"))
					flag= 10;
				if(ok.equals("春天"))
				{
					if(i>=1&&dest.charAt(i-1)=='秋')
					flag=5;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=9;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=6;
				
				else
					flag= 1;
				}
				if(ok.equals("夏天"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=6;
					else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=11;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=8;
				
				else
					flag= 2;
				}
				if(ok.equals("秋天"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=5;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=10;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=7;
				
				else
					flag= 3;
				}
				if(ok.equals("冬天"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=9;
					else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=7;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=8;
				
				else
					flag= 4;
				}
				if(ok.equals("春装"))
				{
					if(i>=1&&dest.charAt(i-1)=='秋')
					flag=5;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=9;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=6;
				
				else
					flag= 1;
				}
				if(ok.equals("夏装"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=6;
					else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=11;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=8;
				
				else
					flag= 2;
				}
				if(ok.equals("秋装"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=5;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=10;
					else if(i>=1&&dest.charAt(i-1)=='冬')
					flag=7;
				
				else
					flag= 3;
				}
				if(ok.equals("冬装"))
				{
					if(i>=1&&dest.charAt(i-1)=='春')
					flag=9;
					else if(i>=1&&dest.charAt(i-1)=='秋')
					flag=7;
					else if(i>=1&&dest.charAt(i-1)=='夏')
					flag=8;
				else
					flag= 4;
				}
			}
		
		System.out.println("flag="+flag);
		if(flag==1)
			return 1;
		else if(flag==2)
			return 2;
		else if(flag==3)
			return 3;
		else if(flag==4)
			return 4;
		else if(flag==5)
			return 5;
		else if(flag==6)
			return 6;
		else if(flag==7)
			return 7;
		else if(flag==8)
			return 8;
		else if(flag==9)
			return 9;
		else if(flag==10)
			return 10;
		else
			return 99;
		
	}
	public int getSex(String str)
	{
		String dest = "";	
		Pattern p = Pattern.compile("\\s*|\t|\r|\n");
		Matcher m = p.matcher(str);
		dest = m.replaceAll("");
			
		String ok=null;
		boolean b=false;
		System.out.println(dest);
		for(int i=0;i<dest.length();i++)
		{
			if(dest.length()==0)
		    System.out.println("标题不能为空,请重新输入");
			else 
				if(i==dest.length()-1)
					ok=dest.substring(i);
					else
					ok=dest.substring(i,i+1);
				if(ok.equals("男"))
				{
					for(int j=0;j<dest.length();j++)
					{
					char c=dest.charAt(j);
					if(c=='女')
						b=true;
					}
					if(b)
					return 3;				
					else
					flag=1;
				}
				if(ok.equals("女"))
				{
					for(int j=0;j<dest.length();j++)
					{
						char c=dest.charAt(j);
						if(c=='男')
						b=true;
					}
					if(b)
					return 3;
					else
					flag=2;
				}
				if(ok.equals("高"))
				{
					if(i<=dest.length()-3&&dest.charAt(i+1)=='富'&&dest.charAt(i+2)=='帅')
					flag=1;
					if(i<=dest.length()-3&&dest.charAt(i=1)=='帅'&&dest.charAt(i+2)=='富')
					flag=1;
				}
				if(ok.equals("白"))
				{
					if(i<=dest.length()-3&&dest.charAt(i+1)=='富'&&dest.charAt(i+2)=='美')
					flag=2;
					if(i<=dest.length()-3&&dest.charAt(i+1)=='美'&&dest.charAt(i+2)=='富')
					flag=2;
				}
				if(ok.equals("萝"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='莉')
					flag=2;
				}
				
				if(ok.equals("罗"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='莉')
					flag=2;
				}
			
				if(ok.equals("靓"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='妹')
					flag=2;
				}
				if(ok.equals("辣"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='妹')
					flag=2;
				}
				if(ok.equals("正"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='太')
					flag=1;
				}
				if(ok.equals("屌"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='丝')
					flag=1;
				}

				if(ok.equals("闺"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='蜜')
					flag=2;
				}
				if(ok.equals("贵"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='妇')
					flag=2;
				}
				if(ok.equals("美"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='妞')
					flag=2;
				}		
				if(ok.equals("帅"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='哥')
					flag=1;
				}
				if(ok.equals("长"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='裙')
					flag=2;
				}
				if(ok.equals("短"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='裙')
					flag=2;
				}
				if(ok.equals("胸"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='罩')
					flag=2;
				}
				if(ok.equals("文"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='胸')
					flag=2;
				}			
				if(ok.equals("少"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='妇')
					flag=2;
				}
				if(ok.equals("御"))
				{
					if(i<=dest.length()-2&&dest.charAt(i+1)=='姐')
					flag=2;
				}
					if(ok.equals("连"))
				{
					if(i<=dest.length()-3&&dest.charAt(i+1)=='衣'&&dest.charAt(i+2)=='裙')
					flag=1;
				}	
		}
		if(flag==1)
			return 1;
		else if(flag==2)
			return 2;
		else
			return 3;
			
	}
	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		System.out.print("请输入标题:");
		while(sc.hasNext())
		{
			int a =new divide().getSex(sc.nextLine());
			System.out.println(a);
		}
		
	}
}


纯体力活。。觉得有用的顶一下,谢谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值