说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

【问底】严澜:数据挖掘入门——分词

HTML文档下载 WORD文档下载 PDF文档下载
随着社会化数据大量产生,硬件速度上升、成本降低,大数据技术的落地实现,数据这座金山已浮出水面。这里,严澜将带我们逐渐开启这座金山——从“分词”开始挖掘数据。

谷歌4亿英镑收购人工智能公司DeepMind,百度目前正推进“百度大脑”项目,腾讯、阿里等各大巨头也在积极布局深度学习。随着社会化数据大量产生,硬件速度上升、成本降低,大数据技术的落地实现,让冷冰冰的数据具有智慧逐渐成为新的热点。要从数据中发现有用的信息就要用到数据挖掘技术,不过买来的数据挖掘书籍一打开全是大量的数学公式,而课本知识早已还给老师了,着实难以下手、非常头大!

我们不妨先跳过数学公式,看看我们了解数据挖掘的目的——发现数据中价值。这个才是关键,如何发现数据中的价值。那什么是数据呢?比如大家要上网首先需要输入网址,打开网页后会自动判断哪些是图片、哪些是新闻、哪些是用户名称、游戏图标等。大脑可以存储大量的信息,包括文字、声音、视频、图片等,这些同样可以转换成数据存储在电脑。人的大脑可以根据输入自动进行判断,电脑可以通过输入判断吗?

答案是肯定的! 不过需要我们编写程序来判断每一种信息,就拿文字识别来说吧,怎么从一个人在社交网络的言论判断他今天的心情是高兴还是愤怒!比如:“你假如上午没给我吃冰淇淋,我绝对会不happy的。”  信息发布时间为下午2点。对于我们人类一看这个句子就知道他是吃过冰淇淋了,心情肯定不会是愤怒。那计算机怎么知道呢?       

这就是今天的主题,要让计算机理解句子的语义,必须要有个程序,上面的句子和发布时间是输入,输出就是 “高兴”。要得到“高兴”就要建立 “高兴”的规则,可以建一个感情色彩词库,比如高兴(识别词是高兴、happy),愤怒(识别词是愤怒、生气)。这里的识别词就是输入中出现的词语,比如上面的句子中的“happy”就识别出了“高兴”这个感情色彩词。但是光识别出“happy”肯定是不行的,前面的“假如……没……,我……不……”等关键词都需要识别出来,才能完整判断一个句子的意思。为了达到这个效果,就必须要用分词技术了。

分词

我们先人工对上面的句子来进行一下切词,使用斜线分割:“你/假如/上午/没/给/我/吃/冰淇淋/,/我/绝对/会/不/happy/的/。/”。但是程序如何做到自动切分?这个其实中国的前辈们已经做了很多中文分词的研究,常见的分词算法有:

1. 基于词典的分词,需要先预设一个分词词典,比如上面句子切分出来的“假如、上午”这些词先存放在词典,然后把句子切分成单字组合成词语去词典里查找,匹配上了就挑选出来一个词。没有匹配上的就切分成单字。

2. 基于统计的分词,需要先获取大量的文本语料库(比如新闻、微博等),然后统计文本里相邻的字同时出现的次数,次数越多就越可能构成一个词。当达到一定次数时就构成了一个词,即可形成语料概率库。再对上面句子进行单字切分,把字与字结合后在语料概率库里查找对应的概率,如果概率大于一定值就挑选出来形成一个词。这个是大概描述,实际生产环境中还需要对句子的上下文进行结合才能更准确的分词。

3. 基于语义的分词,简而言之就是模拟人类对句子的理解来进行分词。需要先整理出中文语句的句法、语义信息作为知识库,然后结合句子的上下文,对句子进行单字切分后组合成词逐个带入知识库进行识别,识别出来就挑选出一个词。目前还没有特别成熟的基于语义的分词系统。

基于词典的分词

为了让大家快速的了解分词技术,我们采用第一个方式来做测试:基于词典的分词,这种方式简单暴力可以解决百分之七八十的问题。基于词典的分词大概分为以下几种方式:

1. 正向最大匹配,沿着我们看到的句子逐字拆分后组合成词语到词典里去匹配,直到匹配不到词语为止。举个实际的例子:“人民大会堂真雄伟”,我们先拆分为单字“人”去词典里去查找,发现有“人”这个词,继续组合句子里的单字组合“人民”去词典里查找,发现有“人民”这个词,以此类推发现到“人民大会堂”,然后会结合“人民大会堂真”去词典里查找没有找到这个词,第一个词“人民大会堂”查找结束。最终分词的结果为:“人民大会堂/真/雄伟”。如下图演示了用正向最大匹配算法识别人民大会堂的过程,“真”,“雄伟”的识别类似。

2. 逆向最大匹配,这个和上面相反,就是倒着推理。比如“沿海南方向”,我们按正向最大匹配来做就会切分成 “沿海/南方/向”,这样就明显不对。采用逆向最大匹配法则来解决这个问题,从句子的最后取得“方向”这两个字查找词典找到“方向”这个词。再加上“南方向”组成三字组合查找词典没有这个词,查找结束,找到“方向”这个词。以此类推,最终分出“沿/海南/方向”。

3. 双向最大匹配,顾名思义就是结合正向最大匹配和逆向最大匹配,最终取其中合理的结果。最早由哈工大王晓龙博士理论化的取最小切分词数,比如“我在中华人民共和国家的院子里看书”,正向最大匹配切分出来为“我/在/中华人民共和国/家/的/院子/里/看书”工8个词语,逆向最大匹配切分出来为“我/在/中华/人民/共/和/国家/的/院子/里/看书”共11个词语。取正向最大匹配切出来的结果就是正确的。但是如果把上面那个例子“沿海南方向”双向切分,都是3个词语,改如何选择?看第4个《最佳匹配法则》。

4. 最佳匹配法则,先准备一堆文本语料库、一个词库,统计词库里的每一个词在语料库里出现的次数记录下来。最后按照词频高的优先选出,比如“沿海南方向”,正向切分为:“沿海/南方/向”,逆向切分为:“沿/海南/方向”。其中“海南”的频度最高,优先取出来。剩下“沿”、“方向”也就正常切分了。是不是这就是基于词典分词的最佳方案?比如数学之美中提到的:“把手抬起来” 和 “这扇门的把手”,可以分为“把”、“手”、“把手”,不管怎么分总有一句话的意思不对。后续再介绍如何通过统计的分词处理这些问题。

说了这么多,我们来实战一下如何基于词典的分词:

public class TestPositiveMatch {    public static void main(String[] args) {   String str = "我爱这个中华人民共和国大家庭";   List<String> normalDict = new ArrayList<String>();   normalDict.add("");   normalDict.add("爱");  normalDict.add("中华");  //测试词库里有中华和中华人民共和国,按照最大匹配应该匹配出中华人民共和国   normalDict.add("中华人民共和国");  int strLen = str.length();  //传入字符串的长度   int j = 0;  String matchWord = ""; //根据词库里识别出来的词  int matchPos = 0; //根据词库里识别出来词后当前句子中的位置  while (j < strLen) {  //从0字符匹配到字符串结束  int matchPosTmp = 0;  //截取字符串的位置   int i = 1;  while (matchPosTmp < strLen) {  //从当前位置直到整句结束,匹配最大长度   matchPosTmp = i + j;  String keyTmp = str.substring(j, matchPosTmp);//切出最大字符串  if (normalDict.contains(keyTmp)) { //判断当前字符串是否在词典中  matchWord = keyTmp;  //如果在词典中匹配上了就赋值  matchPos = matchPosTmp; //同时保存好匹配位置   }   i++;   }   if (!matchWord.isEmpty()) {  //有匹配结果就输出最大长度匹配字符串   j = matchPos;  //保存位置,下次从当前位置继续往后截取   System.out.print(matchWord + " ");   } else {  //从当前词开始往后都没有能够匹配上的词,则按照单字切分的原则切分   System.out.print(str.substring(j, ++j) + " ");   }   matchWord = "";   }   } }

输出结果为:我爱这个中华人民共和国大家庭  

按照这样我们一个基本的分词程序开发完成。

对于文章一开始提到的问题还没解决,如何让程序识别文本中的感情色彩。现在我们先要构建一个感情色彩词库“高兴”,修饰词库“没”、"不”。再完善一下我们的程序:

public class TestSentimentPositiveMatch {   public static void main(String[] args) {   String str = "你假如上午没给我吃冰淇淋,我绝对会不happy的。";  //语义映射   Map<String, String> sentimentMap = new HashMap<String, String>();   sentimentMap.put("happy", "高兴");  //情感词库   List<String> sentimentDict = new ArrayList<String>();   sentimentDict.add("happy");  //修饰词   List<String> decorativeDict = new ArrayList<String>();   decorativeDict.add("不");   decorativeDict.add("没");  //修饰词衡量分数   Map<String, Double> decorativeScoreMap = new HashMap<String, Double>();   decorativeScoreMap.put("不", -0.5);   decorativeScoreMap.put("没", -0.5);  List<String> decorativeWordList = new ArrayList<String>();  //修饰词  String sentimentResult = ""; //情感结果  int strLen = str.length();  //传入字符串的长度   int j = 0;  String matchSentimentWord = ""; //根据词库里识别出来的情感词  String matchDecorativeWord = ""; //根据词库里识别出来的修饰词  int matchPos = 0; //根据词库里识别出来词后当前句子中的位置  while (j < strLen) {  //从0字符匹配到字符串结束  int matchPosTmp = 0;  //截取字符串的位置   int i = 1;  while (matchPosTmp < strLen) {  //从当前位置直到整句结束,匹配最大长度   matchPosTmp = i + j;  String keyTmp = str.substring(j, matchPosTmp);//切出最大字符串  if (sentimentDict.contains(keyTmp)) { //判断当前字符串是否在词典中  matchSentimentWord = keyTmp;  //如果在词典中匹配上了就赋值  matchPos = matchPosTmp; //同时保存好匹配位置   }  if (decorativeDict.contains(keyTmp)) { //判断当前字符串是否在词典中  matchDecorativeWord = keyTmp;  //如果在词典中匹配上了就赋值  matchPos = matchPosTmp; //同时保存好匹配位置   }   i++;   }   if (!matchSentimentWord.isEmpty()) {  //有匹配结果就输出最大长度匹配字符串   j = matchPos;  //保存位置,下次从当前位置继续往后截取   System.out.print(matchSentimentWord + " ");   sentimentResult = sentimentMap.get(matchSentimentWord);   }   if (!matchDecorativeWord.isEmpty()) {  //有匹配结果就输出最大长度匹配字符串   j = matchPos;  //保存位置,下次从当前位置继续往后截取   System.out.print(matchDecorativeWord + " ");   decorativeWordList.add(matchDecorativeWord);   } else {  //从当前词开始往后都没有能够匹配上的词,则按照单字切分的原则切分   System.out.print(str.substring(j, ++j) + " ");   }   matchSentimentWord = "";   matchDecorativeWord = "";   }   double totalScore = 1;   for (String decorativeWord : decorativeWordList) {   Double scoreTmp = decorativeScoreMap.get(decorativeWord);   totalScore *= scoreTmp;   }   System.out.print("\r\n");   if (totalScore > 0) {   System.out.println("当前心情是:" + sentimentResult);   } else {   System.out.println("当前心情是:不" + sentimentResult);   }   } }

通过传入“你假如上午没给我吃冰淇淋,我绝对会不happy的。”,结果输出为:“当前心情是:高兴”。当然你也可以改变其中的修饰词,比如改为:“你假如上午没给我吃冰淇淋,我绝对会happy的。”,结果输出为:“当前心情是:不高兴”。

机器再也不是冷冰冰的,看起来他能读懂你的意思了。不过这只是一个开始,抛出几个问题:

  1. 如何让程序识别句子中的时间?比如“上午”、“下午2点”。
  2. 如何处理“把手抬起来” 和 “这扇门的把手”中的“把”与“手”的问题?
  3. 如何构建海量的知识库,让程序从“婴儿”变成“成年人”?
  4. 如何使用有限的存储空间存储海量的知识库?
  5. 如何提高程序在海量知识库中查找定位信息的效率?
  6. 如何识别新词、人名、新鲜事物等未知领域?

宇宙芸芸众生都是相通的,大脑也许就是一个小宇宙,在这个小宇宙又有很多星球、住着很多生物。而电脑也是宇宙中地球上的一个产物,只要存储计算速度发展到足够强大一定可以构建成一个强大的大脑。

你看这个单词 "testaword" 认识吗?可能不认识,因为我们五官先获取到的信息,然后根据大脑以往学习的经验做出判断。但是你看这个短语 " test a word" 认识吗?再看看开始那个单词“testaword”是不是就亲切多了?   

To Be Continued……

关于作者:严澜现成都创行负责人,历任上海创行科技技术总监。曾任中国平安平台开发工程师,腾讯拍拍网B2C架构工程师。Web3.0语义搜索引擎探索者,海量数据处理,互联网高性能低成本平台架构搭建实践者,构建让更多普通开发者快速掌握高性能技术的框架,自由机器人研发爱好者。

更多《问底》内容

  • 【问底】严澜:数据挖掘入门——分词

《问底》CSDN云计算频道新建栏目,以实践为本,分享新时代软件架构与研发。在含有“【问底】”字样标题的文章中,你可能会看到某个国外IT巨头的架构分享,也可能会看到国内资深工程师对某个技术的实践总结,更可能会看到一系列关于某个新技术的探索。但是在含有“【问底】”字样标题的文章中,你绝对不会看到对任何一个产品的宣传,以及一些带有目的性的趋势探讨。

同时,为了更好地进行技术与实践分享,《问底》邀请对技术具有独特/深刻见解的你一起打造一片只属于技术的天空,详情可邮件至zhonghao@csdn.net。


免费订阅“CSDN云计算(左)CSDN大数据(右)”微信公众号,实时掌握第一手云中消息,了解最新的大数据进展!

CSDN发布虚拟化、Docker、OpenStack、CloudStack、数据中心等相关云计算资讯,     分享Hadoop、Spark、NoSQL/NewSQL、HBase、Impala、内存计算、流计算、机器学习和智能算法等相关大数据观点,提供云计算和大数据技术、平台、实践和产业信息等服务。                

OpenStack企业应用之路技术培训:虚机迁移、HA、VDI、跨Hypervisor管理 云计算技术背后的那些天才程序员:KVM之父Avi Kivity 中国气象局联手阿里云:海量气象数据变“活数据” 浪潮首度公布“I2I计划” 全面接盘IBM X业务 一周消息树:Surface Pro 3想替代笔记本太难,微软正逐渐迷失方向 就是要赚钱!NativeX推自定义原生广告交易 继智能手机后的下一个战场:智能家居 鏖战云端——亚马逊的生存法则 如何保住公司的人才:创造良好的学习氛围 主宰全球的10大算法 专访Google数据科学家彭晨:大数据成为潮流走近各行各业! 强横Metal技术来袭,能否取代OpenGL? Swift横空出世,Xcode 6 Beta有了哪些新变化? 《近匠》GameMei:简单易用、快速开发商用游戏 Gartner:2014年一季度浪潮服务器出货量中国第一 【技术博客推荐】张安站:大数据时代下的商业存储 Amazon继续登顶IaaS魔力象限,榜眼是微软而非Google 友盟Q1移动互联网报告:解读三线城市移动互联网用户 智能生活 “视”不可挡——首届TCL杯HTML5智能电视开发大赛等你来挑战 Mobile First!开源HTML5游戏引擎Kiwi.js 1.0正式发布 天天用的开发环境,你真的了解吗? 物联网时代,你的汽车也在转型 触宝输入法产品经理解析iOS 8第三方输入法开放程度 专访联想谢政维:功耗和价格是天蝎项目最大障碍! 《近匠》蚁视科技创始人覃政:ANTVR,虚拟现实的新生 后棱镜门时代:开发者保护应用安全的5大技巧 专访许鹏:谈C程序员修养及大型项目源码阅读与学习 65种GPU性能测试,AMD开源驱动领先! 一周消息树:我们从WWDC 2014收获了什么? 精益设计:“纸上谈兵”的说服力 指尖上的艺术——如何运用代码发挥无限创意 ActiveForm程序如何得到参数? The Glass Eye sqlserver+asp如何实现图像的存储和显示? Just plain stupid 关于main(int argc,char *argv[]) helpme 如何对vb源代码加密 讨论,关于Swing做的Applet! SUN前途堪忧! explorer007(KKcat):麻烦一下,请把你写的游戏TANK的源代码给我发一份(lyf545@263.net),谢谢!!!! sql server中删除一条记录不成功!? Bad Dream about a Coffin 我要用delphi作个学生管理系统,大家给点意见 有声卡,为何没有声音,具体操作如何?一定加分!!!! What a country ! 交流交流多线程程序的开发经验好吗? 谁有关于ejb方面的书或者资料推荐??一定给分 Women over 50 谁编个例程给我,这50分就是谁的了。题目不难,相信高手5分钟就能做完。 jdk1.3+jswdk1.0.1 的JAVAbeans .class文件要放哪啊????? God painted it 提问:猪真的很幸福吗?要求 wywq(幸福如猪) 回答。 哪位高手做过可视电话的? VB能不能实现“一个结构体类型的数组当参数传递 Forgotten Birthd Husbands Overheard Fine 有个在多线程中使用ADO的问题。请高手们帮忙。 Suede jacket 可能是installshield的Bug! 我想去北京找个工作,请大家帮帮忙,提供点信息! 装了“猫”为何还有630错误(电话线也接了)? excel 問題 各位:数据窗口有一检索变量,现在想retrieve出所有的记录,检索变量应该怎样赋值?谢谢! linux和windows是不是只能分别装在两个分区中 关于图像处理:如何使图像锐化与柔化? 帮帮我啦! 我在使用jdbc读取数据的时候,碰到了内存溢出的问题,怎么回事呀 哪里有餐饮系统的介绍?90不够的话,先欠着,多谢了! 在两个ASP程序之间怎么传递参数? ccl2000(不帅不酷的Goblin):其实你真的很酷很帅的。 大侠帮帮我啦(关于SQL语句的问题) 关于Vxd的编译问题 用VC编的程序,一运行就说“执行非法操作”,问题出在哪里?? SQL Server有病 一个关于api的简单问题 《易佳自定义报表》用后很失望 请教各位高手一个有关报表控件的问题? 小妹向大家请教!可不可以直接在本页的代码中改变该页面浏览时的属性? 家菲猫:惊悉你昨晚惨遭不幸,被窃大量钱物,今日一天无法和你联系上,估计手机和通信录已全部丢失,如果今晚无法来我处,明早8点以前请务必携猫 MM 赶到上海南站!!! MDI文档模板和应用程序调用问题请教,大侠请进! 一个c++问题???? 请问各位高手,sqlserver2k加密的存储过程是否能解密,看到它的实际的语句?可否能跟踪加密的存储过程? 怎样快捷焊修燃油箱防止油箱爆炸? 同一主族的元素,原子半径与单质的熔沸点成正比, 如何判断碱金属、碳族、卤素、氮族、氧族单质的熔沸点变化? 油箱长3.6米宽0.1米油的密度是0.85怎么去算油箱的容量和每0.1米油箱的容量 对于同一周期的主族元素,单质的熔沸点逐渐升高,请举例说明! 为什么氧族,卤素单质熔沸点逐渐升高?氧族,卤素单质的熔沸点是否与共价键强弱有关?有的话,随着原子半径的增大,共价键应该是逐渐减弱,溶沸点也是降低啊! 油罐着火在什么情况下会爆炸? 非金属的气态氢化物的热稳定性和熔、沸点分别与什么有关? 碱金属元素的熔沸点为什么卤单质是分子晶体熔沸点与分子量有关,相对分子质量越大熔沸点越高.碱金属是金属晶体熔沸点与原子半径有关原子半径越大熔沸点越高. 子弹内部是靠什么爆炸的不会是TNT吧,这种东西好象爆炸时没有烟,这种东西可以拿什么替换(可以通过合法渠道搞到的象汽油这种易燃易爆品)要成分状的 非金属氢化物的熔沸点越高,是不是可以说其越稳定?非金属氢化物的稳定性与什么有关? 短周期,同主族非金属单质熔沸点都是第三周期大于第二周期吗 弹药爆炎弹二次爆炸什么意思怪是不是会受到两次攻击比如打下去100点伤害,然后有爆炸又100点伤害{我说的是增加的那百分之65攻击}具体点, 氢化物沸点 稳定性与金属性 非金属性的关系 为什么同周期的非金属单质熔沸点随核电荷数增大而降低? 子弹撞击子弹会爆炸吗?我们都知道当两辆车的时速都很快的时候 撞击在一起 汽车便会产生惊人的爆炸力 但那里头毕竟有发动机 石油 这些易燃的东西 如果是两颗子弹相撞呢?是否也会爆炸 单质熔沸点的高低怎么比较?规律 非金属熔沸点问题..急不是说非金属性越强.熔沸点越高.可同主族从上向下熔沸点依次升高,而非金属性却依次降低.为啥?单质与元素不同?有啥不同? 子弹为什么可以爆炸啊? 元素周期表熔沸点的递变规律同一个主族是什么变化的?同一个周期是怎么变化的?我记得有一个主族熔沸点是先增大后减小,有吗?最好能给出图答的好可以再加分 碱金属和卤素熔沸点及密度变化规律只需简单的说一下就好 不要一大篇 说了半天看不懂的那种 就说碱金属和卤素熔沸点和密度随着质子数变化得规律就好啦^ω^ 子弹焚烧时会不会爆炸 怎么从元素周期表中看氧化物熔沸点的大小 如何通过熔沸点判断金属(非金属)性的强弱? 油罐呼吸阀日常检查和维护应注意哪些问题,怎样检查其是否正常工作? 子弹的燃烧爆炸需要外界的氧气参与吗?1,子弹内部火药燃烧是与(氧气反应)还是和(氧化剂反应的)?2,这些氧气或氧化剂来自哪里或储存在哪里?因害怕摆渡不给显示分白扔, 求元素的,半径大小,还原性,氧化性,熔沸点在化学元素周期表规律如题 油罐呼吸阀多少钱一只 子弹爆炸我有两颗未爆炸的实弹,在什么情况下会爆炸?很怕有意外 物体的熔沸点在元素周期表的规律是什么?说的简单些,我是高一的,告诉我规律就行了,不用说那种很难懂的定理的 油罐呼吸阀里加什么液体啊 “拆下轴承,浸在柴油或汽油中彻底清洗后,再用干净汽油清洗一遍,要注意哪些问题 元素氢化物的稳定性,沸点,还原性,酸碱性在元素周期表内呈现怎样的递变规律请帮我归纳下我还会加分 储存汽油和柴油的储存油罐怎么辨别油罐的质量,是否合格不泄油? 能用汽油洗轴承吗?我的悠悠球是天马神弓,正想洗洗轴承(因为睡眠时间才30秒)我一个朋友说可以用汽油来洗轴承的。我想知道的有以下几点。1、可以用汽油洗轴承吗?2、洗了以后会生 非金属氢化物稳定性与熔沸点有无关系 汽油密度,柴油密度,原油密度有相应的国家规定吗?不同标号汽油,不同号的柴油, 悠悠球可以用汽油洗轴承吗?怎么洗?雪鳞锋洗了有什么好处 比较两相邻元素的非金属性强弱可否用氢化物的沸点来判断?注意是相邻的两个元素 在柴油库里面打电话,会不会发生爆炸.听说打电话会产生静电,油库容易着火,我们的是柴油库 汽油比柴油更容易着燃,为什么汽油机还需要点火? 为什么水的沸点即液态的沸点,比气态的沸点高?请回答, 静电引起燃烧爆炸的条件是什么? 柴油冻结是什么原因? 同主族氢化物熔沸点与氢化物稳定性的关系RT 不考虑氢键的N O F情况下 为什么从上至下氢化物稳定性降低而氢化物熔沸点升高 不应该是稳定性高的熔沸点也高么 房间里突然爆炸,所有设备正常,只有静电爆炸的可能,请问什么能引起静电爆炸? 怎么分辨柴油型号有没有什么测量仪器?请各位高手给予解答!万分着急 谢谢了 单质的熔沸点与元素周期律有什么关系? 氧气有一定的压力,在有静电的情况下会爆炸吗.氧压机不漏油.阀门之间没有装防静电的东西.放空阀是开着的.准备去开出口阀时发生了爆炸.现场阀门烧的变形.他按照正常的操作开的.我同事 不同型号的柴油能不能混合使用 什么因素影响同组元素单质的熔、沸点如氧族单质熔沸点依次升高能不能从原子内部结构作答 一定空间,柴油燃烧为什么会爆炸是不是燃烧的气体无法散去,从而产生膨胀? 在元素周期表里,怎么判断熔沸点高低. 第一主族和第七主族元素单质熔沸点变化趋势相反的原因 电子油箱里的@怎摸写出来 元素周期表中单质熔沸点变化规律氢化物熔沸点变化规律 碱金属熔沸点为什么递减?而卤素相反? 汽车中油箱的结构组成是怎样的? 元素周期表中元素单质熔沸点规律.说明白点. 为什么c族元素不像卤素和碱金属单质那样熔沸点有规律?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn