mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
[improvement][headless]Refactor headless infra to support advanced semantic modelling.
This commit is contained in:
@@ -19,19 +19,6 @@ public class Term {
|
||||
this.nature = nature;
|
||||
}
|
||||
|
||||
public Term(String word, Nature nature, int offset) {
|
||||
this.word = word;
|
||||
this.nature = nature;
|
||||
this.offset = offset;
|
||||
}
|
||||
|
||||
public Term(String word, Nature nature, int offset, int frequency) {
|
||||
this.word = word;
|
||||
this.nature = nature;
|
||||
this.offset = offset;
|
||||
this.frequency = frequency;
|
||||
}
|
||||
|
||||
public int length() {
|
||||
return this.word.length();
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import lombok.Data;
|
||||
@Builder
|
||||
public class DataItem {
|
||||
|
||||
/** * This field uses an underscore (_) at the end. */
|
||||
private String id;
|
||||
|
||||
private String bizName;
|
||||
@@ -19,9 +18,10 @@ public class DataItem {
|
||||
|
||||
private TypeEnums type;
|
||||
|
||||
/** * This field uses an underscore (_) at the end. */
|
||||
private String modelId;
|
||||
|
||||
private String domainId;
|
||||
|
||||
private String defaultAgg;
|
||||
|
||||
public String getNewName() {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.tencent.supersonic.common.pojo;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
@@ -18,5 +19,5 @@ public class ModelRela extends RecordInfo {
|
||||
// left join, inner join, right join, outer join
|
||||
private String joinType;
|
||||
|
||||
private List<JoinCondition> joinConditions;
|
||||
private List<JoinCondition> joinConditions = Lists.newArrayList();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.langchain4j.store.embedding;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.DataItem;
|
||||
import dev.langchain4j.data.document.Metadata;
|
||||
import dev.langchain4j.data.segment.TextSegment;
|
||||
@@ -17,10 +18,18 @@ public class TextSegmentConvert {
|
||||
public static final String QUERY_ID = "queryId";
|
||||
|
||||
public static List<TextSegment> convertToEmbedding(List<DataItem> dataItems) {
|
||||
return dataItems.stream().map(dataItem -> {
|
||||
Map meta = JSONObject.parseObject(JSONObject.toJSONString(dataItem), Map.class);
|
||||
TextSegment textSegment = TextSegment.from(dataItem.getName(), new Metadata(meta));
|
||||
addQueryId(textSegment, dataItem.getId() + dataItem.getType().name().toLowerCase());
|
||||
return dataItems.stream().map(item -> {
|
||||
// suffix with underscore to avoid embedding issue
|
||||
DataItem newItem = DataItem.builder().domainId(item.getDomainId())
|
||||
.bizName(item.getBizName()).type(item.getType()).newName(item.getNewName())
|
||||
.defaultAgg(item.getDefaultAgg()).name(item.getName())
|
||||
.id(item.getId() + Constants.UNDERLINE)
|
||||
.modelId(item.getModelId() + Constants.UNDERLINE)
|
||||
.domainId(item.getDomainId() + Constants.UNDERLINE).build();
|
||||
|
||||
Map meta = JSONObject.parseObject(JSONObject.toJSONString(newItem), Map.class);
|
||||
TextSegment textSegment = TextSegment.from(newItem.getName(), new Metadata(meta));
|
||||
addQueryId(textSegment, newItem.getId() + newItem.getType().name().toLowerCase());
|
||||
return textSegment;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ public class DimensionResp extends SchemaItem {
|
||||
|
||||
private Long modelId;
|
||||
|
||||
private Long domainId;
|
||||
|
||||
private DimensionType type;
|
||||
|
||||
private String expr;
|
||||
|
||||
@@ -196,8 +196,8 @@ public class DataModelNode extends SemanticNode {
|
||||
}
|
||||
|
||||
// second, traverse the ontology to find other related dataModels
|
||||
List<DataModel> relatedDataModels = findRelatedModelsByRelation(ontology, baseDataModel,
|
||||
queryDimensions, queryMeasures);
|
||||
List<DataModel> relatedDataModels = findRelatedModelsByRelation(ontology, queryParam,
|
||||
baseDataModel, queryDimensions, queryMeasures);
|
||||
if (CollectionUtils.isEmpty(relatedDataModels)) {
|
||||
relatedDataModels = findRelatedModelsByIdentifier(ontology, baseDataModel,
|
||||
queryDimensions, queryMeasures);
|
||||
@@ -282,7 +282,8 @@ public class DataModelNode extends SemanticNode {
|
||||
}
|
||||
|
||||
private static List<DataModel> findRelatedModelsByRelation(Ontology ontology,
|
||||
DataModel baseDataModel, Set<String> queryDimensions, Set<String> queryMeasures) {
|
||||
OntologyQueryParam queryParam, DataModel baseDataModel, Set<String> queryDimensions,
|
||||
Set<String> queryMeasures) {
|
||||
Set<String> joinDataModelNames = new HashSet<>();
|
||||
List<DataModel> joinDataModels = new ArrayList<>();
|
||||
Set<String> before = new HashSet<>();
|
||||
@@ -305,6 +306,8 @@ public class DataModelNode extends SemanticNode {
|
||||
boolean isRight = before.contains(joinRelation.getLeft());
|
||||
DataModel other = isRight ? ontology.getDataModelMap().get(joinRelation.getRight())
|
||||
: ontology.getDataModelMap().get(joinRelation.getLeft());
|
||||
String joinDimName = isRight ? joinRelation.getJoinCondition().get(0).getRight()
|
||||
: joinRelation.getJoinCondition().get(0).getLeft();
|
||||
if (!queryDimensions.isEmpty()) {
|
||||
Set<String> linkDimension = other.getDimensions().stream()
|
||||
.map(dd -> dd.getName()).collect(Collectors.toSet());
|
||||
@@ -312,6 +315,8 @@ public class DataModelNode extends SemanticNode {
|
||||
linkDimension.retainAll(queryDimensions);
|
||||
if (!linkDimension.isEmpty()) {
|
||||
isMatch = true;
|
||||
// joinDim should be added to the query dimension
|
||||
queryParam.getDimensions().add(joinDimName);
|
||||
}
|
||||
}
|
||||
Set<String> linkMeasure = other.getMeasures().stream().map(Measure::getName)
|
||||
|
||||
@@ -27,7 +27,7 @@ public class SchemaDictUpdateListener implements ApplicationListener<DataEvent>
|
||||
dictWord.setWord(dataItem.getName());
|
||||
String sign = DictWordType.NATURE_SPILT;
|
||||
String suffixNature = DictWordType.getSuffixNature(dataItem.getType());
|
||||
String nature = sign + dataItem.getModelId() + dataItem.getId() + suffixNature;
|
||||
String nature = sign + dataItem.getModelId() + sign + dataItem.getId() + suffixNature;
|
||||
String natureWithFrequency = nature + " " + Constants.DEFAULT_FREQUENCY;
|
||||
dictWord.setNature(nature);
|
||||
dictWord.setNatureWithFrequency(natureWithFrequency);
|
||||
|
||||
@@ -47,7 +47,7 @@ public interface DimensionService {
|
||||
|
||||
void sendDimensionEventBatch(List<Long> modelIds, EventType eventType);
|
||||
|
||||
DataEvent getDataEvent();
|
||||
DataEvent getAllDataEvents();
|
||||
|
||||
Boolean updateDimValueAlias(DimValueAliasReq req, User user);
|
||||
}
|
||||
|
||||
@@ -6,12 +6,9 @@ import com.alibaba.fastjson.TypeReference;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.DataEvent;
|
||||
import com.tencent.supersonic.common.pojo.DataItem;
|
||||
import com.tencent.supersonic.common.pojo.ModelRela;
|
||||
import com.tencent.supersonic.common.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.*;
|
||||
import com.tencent.supersonic.common.pojo.enums.EventType;
|
||||
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||
@@ -25,23 +22,14 @@ import com.tencent.supersonic.headless.api.pojo.request.DimValueAliasReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.DimensionReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.MetaBatchReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DataSetResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.*;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.DimensionDO;
|
||||
import com.tencent.supersonic.headless.server.persistence.mapper.DimensionDOMapper;
|
||||
import com.tencent.supersonic.headless.server.persistence.repository.DimensionRepository;
|
||||
import com.tencent.supersonic.headless.server.pojo.DimensionFilter;
|
||||
import com.tencent.supersonic.headless.server.pojo.DimensionsFilter;
|
||||
import com.tencent.supersonic.headless.server.pojo.ModelFilter;
|
||||
import com.tencent.supersonic.headless.server.service.DataSetService;
|
||||
import com.tencent.supersonic.headless.server.service.DatabaseService;
|
||||
import com.tencent.supersonic.headless.server.service.DimensionService;
|
||||
import com.tencent.supersonic.headless.server.service.ModelRelaService;
|
||||
import com.tencent.supersonic.headless.server.service.ModelService;
|
||||
import com.tencent.supersonic.headless.server.service.TagMetaService;
|
||||
import com.tencent.supersonic.headless.server.service.*;
|
||||
import com.tencent.supersonic.headless.server.utils.AliasGenerateHelper;
|
||||
import com.tencent.supersonic.headless.server.utils.DimensionConverter;
|
||||
import com.tencent.supersonic.headless.server.utils.NameCheckUtils;
|
||||
@@ -152,11 +140,7 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
|
||||
DimensionConverter.convert(dimensionDO, dimensionReq);
|
||||
dimensionRepository.updateDimension(dimensionDO);
|
||||
if (!oldName.equals(dimensionDO.getName())) {
|
||||
sendEvent(
|
||||
DataItem.builder().modelId(dimensionDO.getModelId() + Constants.UNDERLINE)
|
||||
.newName(dimensionReq.getName()).name(oldName).type(TypeEnums.DIMENSION)
|
||||
.id(dimensionDO.getId() + Constants.UNDERLINE).build(),
|
||||
EventType.UPDATE);
|
||||
sendEvent(getDataItem(dimensionDO), EventType.UPDATE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -424,7 +408,7 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
|
||||
eventPublisher.publishEvent(dataEvent);
|
||||
}
|
||||
|
||||
public DataEvent getDataEvent() {
|
||||
public DataEvent getAllDataEvents() {
|
||||
DimensionFilter dimensionFilter = new DimensionFilter();
|
||||
List<DimensionDO> dimensionDOS = queryDimension(dimensionFilter);
|
||||
return getDataEvent(dimensionDOS, EventType.ADD);
|
||||
@@ -464,13 +448,18 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
|
||||
return true;
|
||||
}
|
||||
|
||||
private DataItem getDataItem(DimensionDO dimensionDO) {
|
||||
ModelResp modelResp = modelService.getModel(dimensionDO.getModelId());
|
||||
DimensionResp dimensionResp = DimensionConverter.convert2DimensionResp(dimensionDO,
|
||||
ImmutableMap.of(modelResp.getId(), modelResp));
|
||||
return DataItem.builder().id(dimensionResp.getId().toString()).name(dimensionResp.getName())
|
||||
.bizName(dimensionResp.getBizName()).modelId(dimensionResp.getModelId().toString())
|
||||
.domainId(dimensionResp.getDomainId().toString()).type(TypeEnums.DIMENSION).build();
|
||||
}
|
||||
|
||||
private DataEvent getDataEvent(List<DimensionDO> dimensionDOS, EventType eventType) {
|
||||
List<DataItem> dataItems = dimensionDOS.stream()
|
||||
.map(dimensionDO -> DataItem.builder().id(dimensionDO.getId() + Constants.UNDERLINE)
|
||||
.name(dimensionDO.getName())
|
||||
.modelId(dimensionDO.getModelId() + Constants.UNDERLINE)
|
||||
.type(TypeEnums.DIMENSION).build())
|
||||
.collect(Collectors.toList());
|
||||
List<DataItem> dataItems =
|
||||
dimensionDOS.stream().map(this::getDataItem).collect(Collectors.toList());
|
||||
return new DataEvent(this, dataItems, eventType);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,59 +5,26 @@ import com.alibaba.fastjson.TypeReference;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.tencent.supersonic.common.jsqlparser.SqlSelectFunctionHelper;
|
||||
import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.DataEvent;
|
||||
import com.tencent.supersonic.common.pojo.DataItem;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.Filter;
|
||||
import com.tencent.supersonic.common.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.*;
|
||||
import com.tencent.supersonic.common.pojo.enums.*;
|
||||
import com.tencent.supersonic.common.util.BeanMapper;
|
||||
import com.tencent.supersonic.headless.api.pojo.DrillDownDimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.Measure;
|
||||
import com.tencent.supersonic.headless.api.pojo.MeasureParam;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetaFilter;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetricParam;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetricQueryDefaultConfig;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElementType;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.api.pojo.*;
|
||||
import com.tencent.supersonic.headless.api.pojo.enums.MapModeEnum;
|
||||
import com.tencent.supersonic.headless.api.pojo.enums.MetricDefineType;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.MetaBatchReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.MetricBaseReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryMapReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryMetricReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DataSetMapInfo;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DataSetResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.MapInfoResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.*;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.*;
|
||||
import com.tencent.supersonic.headless.server.facade.service.ChatLayerService;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.CollectDO;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.MetricDO;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.MetricQueryDefaultConfigDO;
|
||||
import com.tencent.supersonic.headless.server.persistence.mapper.MetricDOMapper;
|
||||
import com.tencent.supersonic.headless.server.persistence.repository.MetricRepository;
|
||||
import com.tencent.supersonic.headless.server.pojo.DimensionsFilter;
|
||||
import com.tencent.supersonic.headless.server.pojo.MetricFilter;
|
||||
import com.tencent.supersonic.headless.server.pojo.MetricsFilter;
|
||||
import com.tencent.supersonic.headless.server.pojo.ModelCluster;
|
||||
import com.tencent.supersonic.headless.server.pojo.ModelFilter;
|
||||
import com.tencent.supersonic.headless.server.service.CollectService;
|
||||
import com.tencent.supersonic.headless.server.service.DataSetService;
|
||||
import com.tencent.supersonic.headless.server.service.DimensionService;
|
||||
import com.tencent.supersonic.headless.server.service.MetricService;
|
||||
import com.tencent.supersonic.headless.server.service.ModelService;
|
||||
import com.tencent.supersonic.headless.server.service.TagMetaService;
|
||||
import com.tencent.supersonic.headless.server.pojo.*;
|
||||
import com.tencent.supersonic.headless.server.service.*;
|
||||
import com.tencent.supersonic.headless.server.utils.AliasGenerateHelper;
|
||||
import com.tencent.supersonic.headless.server.utils.MetricCheckUtils;
|
||||
import com.tencent.supersonic.headless.server.utils.MetricConverter;
|
||||
@@ -70,18 +37,7 @@ import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@@ -667,12 +623,13 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
|
||||
}
|
||||
|
||||
private DataItem getDataItem(MetricDO metricDO) {
|
||||
MetricResp metricResp =
|
||||
MetricConverter.convert2MetricResp(metricDO, new HashMap<>(), Lists.newArrayList());
|
||||
ModelResp modelResp = modelService.getModel(metricDO.getModelId());
|
||||
MetricResp metricResp = MetricConverter.convert2MetricResp(metricDO,
|
||||
ImmutableMap.of(modelResp.getId(), modelResp), Lists.newArrayList());
|
||||
fillDefaultAgg(metricResp);
|
||||
return DataItem.builder().id(metricDO.getId() + Constants.UNDERLINE)
|
||||
.name(metricDO.getName()).bizName(metricDO.getBizName())
|
||||
.modelId(metricDO.getModelId() + Constants.UNDERLINE).type(TypeEnums.METRIC)
|
||||
return DataItem.builder().id(metricResp.getId().toString()).name(metricResp.getName())
|
||||
.bizName(metricResp.getBizName()).modelId(metricResp.getModelId().toString())
|
||||
.domainId(metricResp.getDomainId().toString()).type(TypeEnums.METRIC)
|
||||
.defaultAgg(metricResp.getDefaultAgg()).build();
|
||||
}
|
||||
|
||||
|
||||
@@ -459,7 +459,7 @@ public class ModelServiceImpl implements ModelService {
|
||||
}
|
||||
ModelFilter modelFilter = new ModelFilter();
|
||||
modelFilter.setDomainIds(domainIds);
|
||||
modelFilter.setIncludesDetail(false);
|
||||
modelFilter.setIncludesDetail(true);
|
||||
List<ModelResp> modelResps = getModelList(modelFilter);
|
||||
if (CollectionUtils.isEmpty(modelResps)) {
|
||||
return modelResps;
|
||||
|
||||
@@ -69,7 +69,7 @@ public class MetaEmbeddingTask implements CommandLineRunner {
|
||||
embeddingService.addQuery(embeddingConfig.getMetaCollectionName(),
|
||||
TextSegmentConvert.convertToEmbedding(metricDataItems));
|
||||
|
||||
List<DataItem> dimensionDataItems = dimensionService.getDataEvent().getDataItems();
|
||||
List<DataItem> dimensionDataItems = dimensionService.getAllDataEvents().getDataItems();
|
||||
embeddingService.addQuery(embeddingConfig.getMetaCollectionName(),
|
||||
TextSegmentConvert.convertToEmbedding(dimensionDataItems));
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -105,6 +105,8 @@ public class DimensionConverter {
|
||||
dimensionResp.setType(getType(dimensionDO.getType()));
|
||||
dimensionResp.setTypeEnum(TypeEnums.DIMENSION);
|
||||
dimensionResp.setIsTag(dimensionDO.getIsTag());
|
||||
dimensionResp.setDomainId(modelRespMap
|
||||
.getOrDefault(dimensionResp.getModelId(), new ModelResp()).getDomainId());
|
||||
return dimensionResp;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
tom _1_2 1
|
||||
alice _1_2 1
|
||||
lucy _1_2 1
|
||||
dean _1_2 1
|
||||
john _1_2 1
|
||||
jack _1_2 1
|
||||
@@ -1,4 +0,0 @@
|
||||
p1 _3_4 3
|
||||
p3 _3_4 4
|
||||
p4 _3_4 4
|
||||
p5 _3_4 2
|
||||
@@ -1,3 +0,0 @@
|
||||
欧美 _4_5 1
|
||||
港台 _4_5 3
|
||||
内地 _4_5 2
|
||||
@@ -1,6 +0,0 @@
|
||||
美人鱼 _4_6 1
|
||||
青花瓷 _4_6 1
|
||||
Love#Story _4_6 1
|
||||
爱情转移 _4_6 1
|
||||
人间烟火 _4_6 1
|
||||
光的方向 _4_6 1
|
||||
@@ -1,2 +0,0 @@
|
||||
国风 _4_7 2
|
||||
流行 _4_7 4
|
||||
@@ -1,6 +0,0 @@
|
||||
张碧晨 _4_8 1
|
||||
周杰伦 _4_8 1
|
||||
Taylor#Swift _4_8 1
|
||||
程响 _4_8 1
|
||||
林俊杰 _4_8 1
|
||||
陈奕迅 _4_8 1
|
||||
@@ -1,2 +0,0 @@
|
||||
[InternetShortcut]
|
||||
URL=https://github.com/hankcs/HanLP/
|
||||
@@ -1,3 +0,0 @@
|
||||
龚 nr 1
|
||||
龛 ng 1
|
||||
龛影 n 1
|
||||
@@ -1,4 +0,0 @@
|
||||
买@水果 1
|
||||
然后@来 1
|
||||
我@遗忘 10
|
||||
遗忘@我 10
|
||||
@@ -1,8 +0,0 @@
|
||||
阿里云 _10_20 5
|
||||
天猫 _10_20 5
|
||||
腾讯游戏 _10_20 5
|
||||
度小满 _10_20 5
|
||||
京东金融 _10_20 5
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
张勇 _10_22 5
|
||||
马化腾 _10_22 5
|
||||
朱光 _10_22 5
|
||||
刘强东 _10_22 5
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
hr _1_1 876
|
||||
sales _1_1 872
|
||||
marketing _1_1 310
|
||||
strategy _1_1 360
|
||||
sales _1_1 500
|
||||
@@ -1,18 +0,0 @@
|
||||
tom _1_2 52
|
||||
alice _1_2 47
|
||||
lucy _1_2 31
|
||||
dean _1_2 36
|
||||
john _1_2 50
|
||||
jack _1_2 38
|
||||
admin _1_2 70
|
||||
周杰伦 _4_8 100
|
||||
陈奕迅 _4_8 100
|
||||
林俊杰 _4_8 100
|
||||
张碧晨 _4_8 100
|
||||
程响 _4_8 100
|
||||
Taylor#Swift _4_8 100
|
||||
内地 _4_5 100
|
||||
欧美 _4_5 100
|
||||
港台 _4_5 100
|
||||
流行 _4_7 100
|
||||
国风 _4_7 100
|
||||
@@ -1,6 +0,0 @@
|
||||
p1 _3_4 52
|
||||
p2 _3_4 47
|
||||
p3 _3_4 31
|
||||
p4 _3_4 36
|
||||
p5 _3_4 50
|
||||
p6 _3_4 38
|
||||
@@ -1,9 +0,0 @@
|
||||
周杰伦 _4_8 9000
|
||||
周深 _4_8 8000
|
||||
周传雄 _4_8 7000
|
||||
周华建 _4_8 6000
|
||||
陈奕迅 _4_8 8000
|
||||
林俊杰 _4_8 7000
|
||||
张碧晨 _4_8 7000
|
||||
程响 _4_8 7000
|
||||
Taylor#Swift _4_8 7000
|
||||
@@ -1,4 +0,0 @@
|
||||
美国 _5_8 1
|
||||
加拿大 _5_8 1
|
||||
锡尔赫特、吉大港、库斯蒂亚 _5_8 1
|
||||
孟加拉国 _5_8 3
|
||||
@@ -1,6 +0,0 @@
|
||||
现代 _5_9 1
|
||||
tagore _5_9 1
|
||||
蓝调 _5_9 1
|
||||
流行 _5_9 1
|
||||
民间 _5_9 1
|
||||
nazrul _5_9 1
|
||||
@@ -1,4 +0,0 @@
|
||||
美国 _6_11 1
|
||||
印度 _6_11 2
|
||||
英国 _6_11 1
|
||||
孟加拉国 _6_11 2
|
||||
@@ -1,2 +0,0 @@
|
||||
男性 _6_12 3
|
||||
女性 _6_12 3
|
||||
@@ -1,2 +0,0 @@
|
||||
mp4 _7_14 4
|
||||
mp3 _7_14 2
|
||||
@@ -1,4 +0,0 @@
|
||||
美国 _8_17 1
|
||||
印度 _8_17 2
|
||||
英国 _8_17 1
|
||||
孟加拉国 _8_17 2
|
||||
@@ -1,2 +0,0 @@
|
||||
英文 _8_18 2
|
||||
孟加拉语 _8_18 4
|
||||
@@ -1,6 +0,0 @@
|
||||
阿米·奥帕尔·霍伊 _8_16 1
|
||||
我的爱 _8_16 1
|
||||
打败它 _8_16 1
|
||||
阿杰伊阿卡什 _8_16 1
|
||||
Tumi#长袍#尼罗布 _8_16 1
|
||||
舒克诺#帕塔尔#努普尔#帕埃 _8_16 1
|
||||
@@ -1,5 +0,0 @@
|
||||
百度集团 _9_15 5
|
||||
阿里巴巴集团 _9_15 5
|
||||
深圳市腾讯计算机系统有限公司 _9_15 5
|
||||
北京京东世纪贸易有限公司 _9_15 5
|
||||
网易公司 _9_15 5
|
||||
@@ -1,4 +0,0 @@
|
||||
北京 _9_16 5
|
||||
杭州 _9_16 5
|
||||
深圳 _9_16 5
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
李彦宏 _9_18 5
|
||||
马云 _9_18 5
|
||||
马化腾 _9_18 5
|
||||
刘强东 _9_18 5
|
||||
丁磊 _9_18 5
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
李彦宏 _9_19 5
|
||||
张勇 _9_19 5
|
||||
刘炽平 _9_19 5
|
||||
刘强东 _9_19 5
|
||||
丁磊 _9_19 5
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,44 +0,0 @@
|
||||
序号,代码,名称,帮助记忆的诠释,例子及注解
|
||||
1,Ag,形语素,形容词性语素。形容词代码为a,语素代码g前面置以A。,绿色/n 似/d 锦/Ag ,
|
||||
2,a,形容词,取英语形容词adjective的第1个字母,[重要/a 步伐/n]NP ,美丽/a ,看似/v 抽象/a ,
|
||||
3,ad,副形词,直接作状语的形容词。形容词代码a和副词代码d并在一起。,[积极/ad 谋求/v]V-ZZ ,幻象/n 易/ad 逝/Vg ,
|
||||
4,an,名形词,具有名词功能的形容词。形容词代码a和名词代码n并在一起。,[外交/n 和/c 安全/an]NP-BL ,
|
||||
5,Bg,区别语素,区别词性语素。区别词代码为b,语素代码g前面置以B。,赤/Ag 橙/Bg 黄/a 绿/a 青/a 蓝/a 紫/a ,
|
||||
6,b,区别词,取汉字“别”的声母。,女/b 司机/n, 金/b 手镯/n, 慢性/b 胃炎/n, 古/b 钱币/n, 副/b 主任/n, 总/b 公司/n单音节区别词和单音节名词或名语素组合,作为一个词,并标以名词词性n。 雄鸡/n, 雌象/n, 女魔/n, 古币/n少数“单音节区别词+双音节词”的结构作为一个词。总书记/n ,
|
||||
7,c,连词,取英语连词conjunction的第1个字母。,合作/vn 与/c 伙伴/n
|
||||
8,Dg,副语素,副词性语素。副词代码为d,语素代码g前面置以D。,了解/v 甚/Dg 深/a ,煞/Dg 是/v 喜人/a ,
|
||||
9,d,副词,取adverb的第2个字母,因其第1个字母已用于形容词。,进一步/d 发展/v ,
|
||||
10,e,叹词,取英语叹词exclamation的第1个字母。,啊/e ,/w 那/r 金灿灿/z 的/u 麦穗/n ,
|
||||
11,f,方位词,取汉字“方”。,军人/n 的/u 眼睛/n 里/f 不/d 是/v 没有/v 风景/n ,
|
||||
12,h,前接成分,取英语head的第1个字母。,许多/m 非/h 主角/n 人物/n ,办事处/n 的/u “/w 准/h 政府/n ”/w 功能/n 不断/d 加强/v ,
|
||||
13,i,成语,取英语成语idiom的第1个字母。,一言一行/i ,义无反顾/i ,
|
||||
14,j,简称略语,取汉字“简”的声母。,[德/j 外长/n]NP ,文教/j ,
|
||||
15,k,后接成分,后接成分。,少年儿童/l 朋友/n 们/k ,身体/n 健康/a 者/k ,
|
||||
16,l,习用语,习用语尚未成为成语,有点“临时性”,取“临”的声母。,少年儿童/l 朋友/n 们/k ,落到实处/l ,
|
||||
17,Mg,数语素,数词性语素。数词代码为m,语素代码g前面置以M。,甲/Mg 减下/v 的/u 人/n 让/v 乙/Mg 背上/v ,凡/d “/w 寅/Mg 年/n ”/w 中/f 出生/v 的/u 人/n 生肖/n 都/d 属/v 虎/n ,
|
||||
18,m,数词,取英语numeral的第3个字母,n,u已有他用。,1.数量词组应切分为数词和量词。 三/m 个/q, 10/m 公斤/q, 一/m 盒/q 点心/n ,但少数数量词已是词典的登录单位,则不再切分。 一个/m , 一些/m ,2. 基数、序数、小数、分数、百分数一律不予切分,为一个切分单位,标注为 m 。一百二十三/m,20万/m, 123.54/m, 一个/m, 第一/m, 第三十五/m, 20%/m, 三分之二/m, 千分之三十/m, 几十/m 人/n, 十几万/m 元/q, 第一百零一/m 个/q ,3. 约数,前加副词、形容词或后加“来、多、左右”等助数词的应予分开。约/d 一百/m 多/m 万/m,仅/d 一百/m 个/q, 四十/m 来/m 个/q,二十/m 余/m 只/q, 十几/m 个/q,三十/m 左右/m ,两个数词相连的及“成百”、“上千”等则不予切分。五六/m 年/q, 七八/m 天/q,十七八/m 岁/q, 成百/m 学生/n,上千/m 人/n, 4.表序关系的“数+名”结构,应予切分。二/m 连/n , 三/m 部/n ,
|
||||
19,Ng,名语素,名词性语素。名词代码为n,语素代码g前面置以N。,出/v 过/u 两/m 天/q 差/Ng, 理/v 了/u 一/m 次/q 发/Ng,
|
||||
20,n,名词,取英语名词noun的第1个字母。,(参见 动词--v)岗位/n , 城市/n , 机会/n ,她/r 是/v 责任/n 编辑/n ,
|
||||
21,nr,人名,名词代码n和“人(ren)”的声母并在一起。,1. 汉族人及与汉族起名方式相同的非汉族人的姓和名单独切分,并分别标注为nr。张/nr 仁伟/nr, 欧阳/nr 修/nr, 阮/nr 志雄/nr, 朴/nr 贞爱/nr汉族人除有单姓和复姓外,还有双姓,即有的女子出嫁后,在原来的姓上加上丈夫的姓。如:陈方安生。这种情况切分、标注为:陈/nr 方/nr 安生/nr;唐姜氏,切分、标注为:唐/nr 姜氏/nr。2. 姓名后的职务、职称或称呼要分开。江/nr 主席/n, 小平/nr 同志/n, 江/nr 总书记/n,张/nr 教授/n, 王/nr 部长/n, 陈/nr 老总/n, 李/nr 大娘/n, 刘/nr 阿姨/n, 龙/nr 姑姑/n3. 对人的简称、尊称等若为两个字,则合为一个切分单位,并标以nr。老张/nr, 大李/nr, 小郝/nr, 郭老/nr, 陈总/nr4. 明显带排行的亲属称谓要切分开,分不清楚的则不切开。三/m 哥/n, 大婶/n, 大/a 女儿/n, 大哥/n, 小弟/n, 老爸/n5. 一些著名作者的或不易区分姓和名的笔名通常作为一个切分单位。鲁迅/nr, 茅盾/nr, 巴金/nr, 三毛/nr, 琼瑶/nr, 白桦/nr6. 外国人或少数民族的译名(包括日本人的姓名)不予切分,标注为nr。克林顿/nr, 叶利钦/nr, 才旦卓玛/nr, 小林多喜二/nr, 北研二/nr,华盛顿/nr, 爱因斯坦/nr有些西方人的姓名中有小圆点,也不分开。卡尔·马克思/nr
|
||||
22,ns,地名,名词代码n和处所词代码s并在一起。,(参见2。短语标记说明--NS)安徽/ns,深圳/ns,杭州/ns,拉萨/ns,哈尔滨/ns, 呼和浩特/ns, 乌鲁木齐/ns,长江/ns,黄海/ns,太平洋/ns, 泰山/ns, 华山/ns,亚洲/ns, 海南岛/ns,太湖/ns,白洋淀/ns, 俄罗斯/ns,哈萨克斯坦/ns,彼得堡/ns, 伏尔加格勒/ns 1. 国名不论长短,作为一个切分单位。中国/ns, 中华人民共和国/ns, 日本国/ns, 美利坚合众国/ns, 美国/ns2. 地名后有“省”、“市”、“县”、“区”、“乡”、“镇”、“村”、“旗”、“州”、“都”、“府”、“道”等单字的行政区划名称时,不切分开,作为一个切分单位。四川省/ns, 天津市/ns,景德镇/ns沙市市/ns, 牡丹江市/ns,正定县/ns,海淀区/ns, 通州区/ns,东升乡/ns, 双桥镇/ns 南化村/ns,华盛顿州/ns,俄亥俄州/ns,东京都/ns, 大阪府/ns,北海道/ns, 长野县/ns,开封府/ns,宣城县/ns3. 地名后的行政区划有两个以上的汉字,则将地名同行政区划名称切开,不过要将地名同行政区划名称用方括号括起来,并标以短语NS。[芜湖/ns 专区/n] NS,[宣城/ns 地区/n]ns,[内蒙古/ns 自治区/n]NS,[深圳/ns 特区/n]NS, [厦门/ns 经济/n 特区/n]NS, [香港/ns 特别/a 行政区/n]NS,[香港/ns 特区/n]NS, [华盛顿/ns 特区/n]NS,4. 地名后有表示地形地貌的一个字的普通名词,如“江、河、山、洋、海、岛、峰、湖”等,不予切分。鸭绿江/ns,亚马逊河/ns, 喜马拉雅山/ns, 珠穆朗玛峰/ns,地中海/ns,大西洋/ns,洞庭湖/ns, 塞普路斯岛/ns 5. 地名后接的表示地形地貌的普通名词若有两个以上汉字,则应切开。然后将地名同该普通名词标成短语NS。[台湾/ns 海峡/n]NS,[华北/ns 平原/n]NS,[帕米尔/ns 高原/n]NS, [南沙/ns 群岛/n]NS,[京东/ns 大/a 峡谷/n]NS [横断/b 山脉/n]NS6.地名后有表示自然区划的一个字的普通名词,如“ 街,路,道,巷,里,町,庄,村,弄,堡”等,不予切分。 中关村/ns,长安街/ns,学院路/ns, 景德镇/ns, 吴家堡/ns, 庞各庄/ns, 三元里/ns,彼得堡/ns, 北菜市巷/ns, 7.地名后接的表示自然区划的普通名词若有两个以上汉字,则应切开。然后将地名同自然区划名词标成短语NS。[米市/ns 大街/n]NS, [蒋家/nz 胡同/n]NS , [陶然亭/ns 公园/n]NS , 8. 大小地名相连时的标注方式为:北京市/ns 海淀区/ns 海淀镇/ns [南/f 大街/n]NS [蒋家/nz 胡同/n]NS 24/m 号/q ,
|
||||
23,nt,机构团体,“团”的声母为t,名词代码n和t并在一起。,(参见2。短语标记说明--NT)联合国/nt,中共中央/nt,国务院/nt, 北京大学/nt1.大多数团体、机构、组织的专有名称一般是短语型的,较长,且含有地名或人名等专名,再组合,标注为短语NT。[中国/ns 计算机/n 学会/n]NT, [香港/ns 钟表业/n 总会/n]NT, [烟台/ns 大学/n]NT, [香港/ns 理工大学/n]NT, [华东/ns 理工大学/n]NT,[合肥/ns 师范/n 学院/n]NT, [北京/ns 图书馆/n]NT, [富士通/nz 株式会社/n]NT, [香山/ns 植物园/n]NT, [安娜/nz 美容院/n]NT,[上海/ns 手表/n 厂/n]NT, [永和/nz 烧饼铺/n]NT,[北京/ns 国安/nz 队/n]NT,2. 对于在国际或中国范围内的知名的唯一的团体、机构、组织的名称即使前面没有专名,也标为nt或NT。联合国/nt,国务院/nt,外交部/nt, 财政部/nt,教育部/nt, 国防部/nt,[世界/n 贸易/n 组织/n]NT, [国家/n 教育/vn 委员会/n]NT,[信息/n 产业/n 部/n]NT,[全国/n 信息/n 技术/n 标准化/vn 委员会/n]NT,[全国/n 总/b 工会/n]NT,[全国/n 人民/n 代表/n 大会/n]NT,美国的“国务院”,其他国家的“外交部、财政部、教育部”,必须在其所属国的国名之后出现时,才联合标注为NT。[美国/ns 国务院/n]NT,[法国/ns 外交部/n]NT,[美/j 国会/n]NT,日本有些政府机构名称很特别,无论是否出现在“日本”国名之后都标为nt。[日本/ns 外务省/nt]NT,[日/j 通产省/nt]NT通产省/nt 3. 前后相连有上下位关系的团体机构组织名称的处理方式如下:[联合国/nt 教科文/j 组织/n]NT, [中国/ns 银行/n 北京/ns 分行/n]NT,[河北省/ns 正定县/ns 西平乐乡/ns 南化村/ns 党支部/n]NT, 当下位名称含有专名(如“北京/ns 分行/n”、“南化村/ns 党支部/n”、“昌平/ns 分校/n”)时,也可脱离前面的上位名称单独标注为NT。[中国/ns 银行/n]NT [北京/ns 分行/n]NT,北京大学/nt [昌平/ns 分校/n]NT,4. 团体、机构、组织名称中用圆括号加注简称时:[宝山/ns 钢铁/n (/w 宝钢/j )/w 总/b 公司/n]NT,[宝山/ns 钢铁/n 总/b 公司/n]NT,(/w 宝钢/j )/w
|
||||
24,nx,外文字符,外文字符。,A/nx 公司/n ,B/nx 先生/n ,X/nx 君/Ng ,24/m K/nx 镀金/n ,C/nx 是/v 光速/n ,Windows98/nx ,PentiumIV/nx ,I LOVE THIS GAME/nx ,
|
||||
25,nz,其他专名,“专”的声母的第1个字母为z,名词代码n和z并在一起。,(参见2。短语标记说明--NZ)除人名、国名、地名、团体、机构、组织以外的其他专有名词都标以nz。满族/nz,俄罗斯族/nz,汉语/nz,罗马利亚语/nz, 捷克语/nz,中文/nz, 英文/nz, 满人/nz, 哈萨克人/nz, 诺贝尔奖/nz, 茅盾奖/nz, 1.包含专有名称(或简称)的交通线,标以nz;短语型的,标为NZ。津浦路/nz, 石太线/nz, [京/j 九/j 铁路/n]NZ, [京/j 津/j 高速/b 公路/n]NZ, 2. 历史上重要事件、运动等专有名称一般是短语型的,按短语型专有名称处理,标以NZ。[卢沟桥/ns 事件/n]NZ, [西安/ns 事变/n]NZ,[五四/t 运动/n]NZ, [明治/nz 维新/n]NZ,[甲午/t 战争/n]NZ,3.专有名称后接多音节的名词,如“语言”、“文学”、“文化”、“方式”、“精神”等,失去专指性,则应分开。欧洲/ns 语言/n, 法国/ns 文学/n, 西方/ns 文化/n, 贝多芬/nr 交响乐/n, 雷锋/nr 精神/n, 美国/ns 方式/n,日本/ns 料理/n, 宋朝/t 古董/n 4. 商标(包括专名及后接的“牌”、“型”等)是专指的,标以nz,但其后所接的商品仍标以普通名词n。康师傅/nr 方便面/n, 中华牌/nz 香烟/n, 牡丹III型/nz 电视机/n, 联想/nz 电脑/n, 鳄鱼/nz 衬衣/n, 耐克/nz 鞋/n5. 以序号命名的名称一般不认为是专有名称。2/m 号/q 国道/n ,十一/m 届/q 三中全会/j如果前面有专名,合起来作为短语型专名。[中国/ns 101/m 国道/n]NZ, [中共/j 十一/m 届/q 三中全会/j]NZ,6. 书、报、杂志、文档、报告、协议、合同等的名称通常有书名号加以标识,不作为专有名词。由于这些名字往往较长,名字本身按常规处理。《/w 宁波/ns 日报/n 》/w ,《/w 鲁迅/nr 全集/n 》/w,中华/nz 读书/vn 报/n, 杜甫/nr 诗选/n,少数书名、报刊名等专有名称,则不切分。红楼梦/nz, 人民日报/nz,儒林外史/nz 7. 当有些专名无法分辨它们是人名还是地名或机构名时,暂标以nz。[巴黎/ns 贝尔希/nz 体育馆/n]NT,其中“贝尔希”只好暂标为nz。
|
||||
26,o,拟声词,取英语拟声词onomatopoeia的第1个字母。,哈哈/o 一/m 笑/v ,装载机/n 隆隆/o 推进/v ,
|
||||
27,p,介词,取英语介词prepositional的第1个字母。,对/p 子孙后代/n 负责/v ,以/p 煤/n 养/v 农/Ng ,为/p 治理/v 荒山/n 服务/v , 把/p 青年/n 推/v 上/v 了/u 领导/vn 岗位/n ,
|
||||
28,q,量词,取英语quantity的第1个字母。,(参见数词m)首/m 批/q ,一/m 年/q ,
|
||||
29,Rg,代语素,代词性语素。代词代码为r,在语素的代码g前面置以R。,读者/n 就/d 是/v 这/r 两/m 棵/q 小树/n 扎根/v 于/p 斯/Rg 、/w 成长/v 于/p 斯/Rg 的/u 肥田/n 沃土/n ,
|
||||
30,r,代词,取英语代词pronoun的第2个字母,因p已用于介词。,单音节代词“本”、“每”、“各”、“诸”后接单音节名词时,和后接的单音节名词合为代词;当后接双音节名词时,应予切分。本报/r, 每人/r, 本社/r, 本/r 地区/n, 各/r 部门/n
|
||||
31,s,处所词,取英语space的第1个字母。,家里/s 的/u 电脑/n 都/d 联通/v 了/u 国际/n 互联网/n ,西部/s 交通/n 咽喉/n ,
|
||||
32,Tg,时语素,时间词性语素。时间词代码为t,在语素的代码g前面置以T。,3日/t 晚/Tg 在/p 总统府/n 发表/v 声明/n ,尊重/v 现/Tg 执政/vn 当局/n 的/u 权威/n ,
|
||||
33,t,时间词,取英语time的第1个字母。,1. 年月日时分秒,按年、月、日、时、分、秒切分,标注为t 。1997年/t 3月/t 19日/t 下午/t 2时/t 18分/t若数字后无表示时间的“年、月、日、时、分、秒”等的标为数词m。1998/m 中文/n 信息/n 处理/vn 国际/n 会议/n 2. 历史朝代的名称虽然有专有名词的性质,仍标注为t。西周/t, 秦朝/t, 东汉/t, 南北朝/t, 清代/t“牛年、虎年”等一律不予切分,标注为:牛年/t, 虎年/t, 甲午年/t, 甲午/t 战争/n, 庚子/t 赔款/n, 戊戌/t 变法/n
|
||||
34,u,助词,取英语助词auxiliary。,[[俄罗斯/ns 和/c 北约/j]NP-BL 之间/f [战略/n 伙伴/n 关系/n]NP 的/u 建立/vn]NP 填平/v 了/u [[欧洲/ns 安全/a 政治/n]NP 的/u 鸿沟/n]NP
|
||||
35,Vg,动语素,动词性语素。动词代码为v。在语素的代码g前面置以V。,洗/v 了/u 一个/m 舒舒服服/z 的/u 澡/Vg
|
||||
36,v,动词,取英语动词verb的第一个字母。,(参见 名词--n)[[[欧盟/j 扩大/v]S 的/u [历史性/n 决定/n]NP]NP 和/c [北约/j 开放/v]S]NP-BL [为/p [创建/v [一/m 种/q 新/a 的/u 欧洲/ns 安全/a 格局/n]NP]VP-SBI]PP-MD [奠定/v 了/u 基础/n]V-SBI ,,
|
||||
37,vd,副动词,直接作状语的动词。动词和副词的代码并在一起。,形势/n 会/v 持续/vd 好转/v ,认为/v 是/v 电话局/n 收/v 错/vd 了/u 费/n ,
|
||||
38,vn,名动词,指具有名词功能的动词。动词和名词的代码并在一起。,引起/v 人们/n 的/u 关注/vn 和/c 思考/vn ,收费/vn 电话/n 的/u 号码/n ,
|
||||
39,w,标点符号,,”/w :/w
|
||||
40,x,非语素字,非语素字只是一个符号,字母x通常用于代表未知数、符号。,
|
||||
41,Yg,语气语素,语气词性语素。语气词代码为y。在语素的代码g前面置以Y。,唯/d 大力/d 者/k 能/v 致/v 之/u 耳/Yg
|
||||
42,y,语气词,取汉字“语”的声母。,会/v 泄露/v 用户/n 隐私/n 吗/y ,又/d 何在/v 呢/y ?
|
||||
43,z,状态词,取汉字“状”的声母的前一个字母。,取得/v 扎扎实实/z 的/u 突破性/n 进展/vn ,四季/n 常青/z 的/u 热带/n 树木/n ,短短/z 几/m 年/q 间,
|
||||
|
@@ -1 +0,0 @@
|
||||
1.7.5
|
||||
@@ -1,2 +0,0 @@
|
||||
root=.
|
||||
CustomDictionaryPath=data/dictionary/custom/DimValue_1_1.txt;data/dictionary/custom/DimValue_1_2.txt;data/dictionary/custom/DimValue_1_3.txt;data/dictionary/custom/DimValue_4_8.txt
|
||||
Reference in New Issue
Block a user