1.能力側(cè)重不同
申論2:主要測查考生的閱讀理解能力、貫徹執(zhí)行能力、群眾工作能力和應(yīng)用寫作能力等。
申論3:主要測查考生的閱讀理解能力、依法辦事能力、公共服務(wù)能力和文字表達能力。
2.考查主題不同
申論/2/3都會給出5~6則材料,每則材料會圍繞著一個宏觀的主題。申論2的主題比較偏向基層,主要與基層治理、鄉(xiāng)村振興、三農(nóng)問題等相關(guān);申論3的主題偏向執(zhí)法類、法治類,與法律法規(guī)、執(zhí)法原則、法治建設(shè)相關(guān)。
申論1最難,主要體現(xiàn)在:
主題選取貼合時政熱點,且比較抽象,理解難度大;小題目會出現(xiàn)個別較難的題目,影響得分;作文在主題理解時比較難。
申論3次之,主要體現(xiàn)在:
主題選取與法治、執(zhí)法工作相關(guān);不考察大作文;在個別小題目上會設(shè)置較難的題目。
申論2相較而言最簡單,主要體現(xiàn)在:
主題選取與三農(nóng)問題、鄉(xiāng)村振興、基層治理相關(guān);不考察大作文。題目難度整體適中。
申論是指針對給定材料或者特定話題而引申開來、展開議論的一種文體,是隨著公務(wù)員錄用考試制度而出現(xiàn)、推行的一種新興文體。它的平均分在40左右。作為一種選拔人才的測試方式,申論的命題非常精確、科學(xué),它是在充分吸收策論、基礎(chǔ)寫作和公文寫作優(yōu)點的基礎(chǔ)上,發(fā)展起來的一種以考查學(xué)生的實際能力為目標(biāo)的科學(xué)的測評方式。
從字面上理解,“申”可以理解成申述、申辯、申明,“論”則是議論、論說、論證。所謂申論也就是對某個問題闡述觀點、論述理由,合理地推論材料與材料以及觀點與材料之間的邏輯關(guān)系。
申論1最難。
申論1為普通職位,主要考察綜合分析能力、提出和解決問題的能力、文字表達能力,題目抽象、理解難度大;申論2為艱苦邊遠地區(qū)基層職位,主要考察貫徹執(zhí)行能力、群眾工作能力和應(yīng)用寫作能力,不考大作文,而且很少出現(xiàn)刁鉆難題;申論3為行政執(zhí)法類職位,更注重依法辦事能力、公共服務(wù)能力,必考應(yīng)用文寫作,不會考大作文。
難度應(yīng)該是申論2就是鄉(xiāng)鎮(zhèn)卷簡單些,申論1和申論3,通用和執(zhí)法難度相當(dāng),通用考的廣,執(zhí)法專業(yè)性強。
1.能力側(cè)重不同
申論2:主要測查考生的閱讀理解能力、貫徹執(zhí)行能力、群眾工作能力和應(yīng)用寫作能力等。
申論3:主要測查考生的閱讀理解能力、依法辦事能力、公共服務(wù)能力和文字表達能力。
2.考查主題不同
申論/2/3都會給出5~6則材料,每則材料會圍繞著一個宏觀的主題。申論2的主題比較偏向基層,主要與基層治理、鄉(xiāng)村振興、三農(nóng)問題等相關(guān);申論3的主題偏向執(zhí)法類、法治類,與法律法規(guī)、執(zhí)法原則、法治建設(shè)相關(guān)。
3.題型側(cè)重不同
根據(jù)往年的考試情況來看,申論2不考大作文,概括題和應(yīng)用文寫作考查概率較大;申論3的必考題型是應(yīng)用文寫作,除了大作文,其他題型均有涉及!
河南論與山西申論的差別考試題的數(shù)量不同河南題多,山西題少
1、性質(zhì)不同:縣級以上機關(guān)申論考試主要測查報考者的閱讀理解能力、綜合分析能力、提出和解決問題能力、文字表達能力。鄉(xiāng)鎮(zhèn)機關(guān)職位申論考試主要測查考生的閱讀理解能力、貫徹執(zhí)行能力、群眾工作能力和應(yīng)用寫作能力等。
2、備考方向不同:報考鄉(xiāng)鎮(zhèn)機關(guān)等職位的考生多鍛煉閱讀理解能力,貫徹執(zhí)行能力,群眾工作能力和應(yīng)用寫作能力。留意地方新聞,報考縣級以上機關(guān)的的考生需重點鍛煉綜合分析能力以及作文的練習(xí),重視國家宏觀政策的理解。
一、申論題目:
點題。這點很重要,申論不是抒情詩歌也不是散文,對著一個文藝十足的申論標(biāo)題,評卷老師是絕不會給出高分的。其次題目不要太長,點明中心就好;
二、結(jié)構(gòu):
一般遵循“提出問題→分析問題→提出對策→升華”四個部分。
1、提出問題
一般都是對給定材料進行中心思想的歸納,最后縮減提煉出的就是文章的問題。
2、分析問題
在寫申論中我們要注意出題者要的是我們能夠站在管理者或者執(zhí)行者的角度對問題進行分析和解決的,
所謂橫看成嶺側(cè)成峰,一個企業(yè)職員、一個農(nóng)民、一個社會管理者對同樣的公共安全事件看法是不一樣的,
甚至是同個部門不同崗位的人之間的角度也都是不一樣的,而管理者的工作性質(zhì)要求考生站在公務(wù)處理的立場,考慮公共利益并以此作為標(biāo)尺和價值標(biāo)準(zhǔn),給出適當(dāng)?shù)慕Y(jié)論。
同時還必須抓住材料的側(cè)重點,看清楚材料是在原因還是在危害,以及危害的種類否則容易出現(xiàn)跑題現(xiàn)象。
3、提出對策
要善于提出方案,也要善于使用合理的方式方法,這是提出可行性方案的前提。要明確對策的出發(fā)點了落腳點,,同時也是我們解決問題的指導(dǎo)思想。
4、小結(jié)升華
將前面所寫內(nèi)容的主題句串聯(lián)起來,效果一定很好。
三、吃透評分標(biāo)準(zhǔn):
一切的分?jǐn)?shù)都是有依有據(jù),而這個依據(jù)就是評分標(biāo)準(zhǔn),不過國家或者地方考試組織者是從不公布評分標(biāo)準(zhǔn)的。
四、詞眼:
閱卷人會在5秒的時間內(nèi)掃視四到五個詞眼,平均一個 2-2.5分。而這就是評分的關(guān)鍵甚至可以說是唯一了(在考生卷面和字體區(qū)分不大的情況下),所以對詞眼把握的重要性考生們也不要忽略。
之前看了Mahout官方示例 20news 的調(diào)用實現(xiàn);于是想根據(jù)示例的流程實現(xiàn)其他例子。網(wǎng)上看到了一個關(guān)于天氣適不適合打羽毛球的例子。
訓(xùn)練數(shù)據(jù):
Day Outlook Temperature Humidity Wind PlayTennis
D1 Sunny Hot High Weak No
D2 Sunny Hot High Strong No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No
D7 Overcast Cool Normal Strong Yes
D8 Sunny Mild High Weak No
D9 Sunny Cool Normal Weak Yes
D10 Rain Mild Normal Weak Yes
D11 Sunny Mild Normal Strong Yes
D12 Overcast Mild High Strong Yes
D13 Overcast Hot Normal Weak Yes
D14 Rain Mild High Strong No
檢測數(shù)據(jù):
sunny,hot,high,weak
結(jié)果:
Yes=》 0.007039
No=》 0.027418
于是使用Java代碼調(diào)用Mahout的工具類實現(xiàn)分類。
基本思想:
1. 構(gòu)造分類數(shù)據(jù)。
2. 使用Mahout工具類進行訓(xùn)練,得到訓(xùn)練模型。
3。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對vector數(shù)據(jù)進行分類。
接下來貼下我的代碼實現(xiàn)=》
1. 構(gòu)造分類數(shù)據(jù):
在hdfs主要創(chuàng)建一個文件夾路徑 /zhoujainfeng/playtennis/input 并將分類文件夾 no 和 yes 的數(shù)據(jù)傳到hdfs上面。
數(shù)據(jù)文件格式,如D1文件內(nèi)容: Sunny Hot High Weak
2. 使用Mahout工具類進行訓(xùn)練,得到訓(xùn)練模型。
3。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對vector數(shù)據(jù)進行分類。
這三步,代碼我就一次全貼出來;主要是兩個類 PlayTennis1 和 BayesCheckData = =》
package myTesting.bayes;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;
import org.apache.mahout.text.SequenceFilesFromDirectory;
import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;
public class PlayTennis1 {
private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";
/*
* 測試代碼
*/
public static void main(String[] args) {
//將訓(xùn)練數(shù)據(jù)轉(zhuǎn)換成 vector數(shù)據(jù)
makeTrainVector();
//產(chǎn)生訓(xùn)練模型
makeModel(false);
//測試檢測數(shù)據(jù)
BayesCheckData.printResult();
}
public static void makeCheckVector(){
//將測試數(shù)據(jù)轉(zhuǎn)換成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"testinput";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失??!");
System.exit(1);
}
//將序列化文件轉(zhuǎn)換成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件轉(zhuǎn)換成向量失??!");
System.out.println(2);
}
}
public static void makeTrainVector(){
//將測試數(shù)據(jù)轉(zhuǎn)換成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"input";
String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失敗!");
System.exit(1);
}
//將序列化文件轉(zhuǎn)換成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件轉(zhuǎn)換成向量失敗!");
System.out.println(2);
}
}
public static void makeModel(boolean completelyNB){
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";
String model = WORK_DIR+Path.SEPARATOR+"model";
String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";
Path in = new Path(input);
Path out = new Path(model);
Path label = new Path(labelindex);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
if(fs.exists(label)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(label, true);
}
TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();
String[] params =null;
if(completelyNB){
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};
}else{
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};
}
ToolRunner.run(tnbj, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("生成訓(xùn)練模型失?。?#34;);
System.exit(3);
}
}
}
package myTesting.bayes;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.mahout.classifier.naivebayes.BayesUtils;
import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;
import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;
import org.apache.mahout.common.Pair;
import org.apache.mahout.common.iterator.sequencefile.PathType;
import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;
import org.apache.mahout.math.RandomAccessSparseVector;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.Vector.Element;
import org.apache.mahout.vectorizer.TFIDF;
import com.google.common.collect.ConcurrentHashMultiset;
import com.google.common.collect.Multiset;
public class BayesCheckData {
private static StandardNaiveBayesClassifier classifier;
private static Map<String, Integer> dictionary;
private static Map<Integer, Long> documentFrequency;
private static Map<Integer, String> labelIndex;
public void init(Configuration conf){
try {
String modelPath = "/zhoujianfeng/playtennis/model";
String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";
String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";
String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";
dictionary = readDictionnary(conf, new Path(dictionaryPath));
documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));
labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));
NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);
classifier = new StandardNaiveBayesClassifier(model);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("檢測數(shù)據(jù)構(gòu)造成vectors初始化時報錯。。。。");
System.exit(4);
}
}
/**
* 加載字典文件,Key: TermValue; Value:TermID
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {
Map<String, Integer> dictionnary = new HashMap<String, Integer>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
String name = path.getName();
return name.startsWith("dictionary.file");
}
};
for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {
dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());
}
return dictionnary;
}
/**
* 加載df-count目錄下TermDoc頻率文件,Key: TermID; Value:DocFreq
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {
Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
return path.getName().startsWith("part-r");
}
};
for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {
documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());
}
return documentFrequency;
}
public static String getCheckResult(){
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String classify = "NaN";
BayesCheckData cdv = new BayesCheckData();
cdv.init(conf);
System.out.println("init done...............");
Vector vector = new RandomAccessSparseVector(10000);
TFIDF tfidf = new TFIDF();
//sunny,hot,high,weak
Multiset<String> words = ConcurrentHashMultiset.create();
words.add("sunny",1);
words.add("hot",1);
words.add("high",1);
words.add("weak",1);
int documentCount = documentFrequency.get(-1).intValue(); // key=-1時表示總文檔數(shù)
for (Multiset.Entry<String> entry : words.entrySet()) {
String word = entry.getElement();
int count = entry.getCount();
Integer wordId = dictionary.get(word); // 需要從dictionary.file-0文件(tf-vector)下得到wordID,
if (StringUtils.isEmpty(wordId.toString())){
continue;
}
if (documentFrequency.get(wordId) == null){
continue;
}
Long freq = documentFrequency.get(wordId);
double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);
vector.setQuick(wordId, tfIdfValue);
}
// 利用貝葉斯算法開始分類,并提取得分最好的分類label
Vector resultVector = classifier.classifyFull(vector);
double bestScore = -Double.MAX_VALUE;
int bestCategoryId = -1;
for(Element element: resultVector.all()) {
int categoryId = element.index();
double score = element.get();
System.out.println("categoryId:"+categoryId+" score:"+score);
if (score > bestScore) {
bestScore = score;
bestCategoryId = categoryId;
}
}
classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";
return classify;
}
public static void printResult(){
System.out.println("檢測所屬類別是:"+getCheckResult());
}
}