{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2604-27453","title":"From Coarse to Fine: Benchmarking and Reward Modeling for Writing-Centric Generation Tasks","arxiv_id":"2604.27453","date":"2026-04-30","proceeding":null,"authors":["Qingyu Ren","Tianjun Pan","Xingzhou Chen","Xuhong Wang"],"abstract":"Large language models have achieved remarkable progress in text generation but still struggle with generative writing tasks. In terms of evaluation, existing benchmarks evaluate writing reward models coarsely and fail to measure performance from the perspective of specific requirements. In terms of training, existing training methods either use LLM-as-a-judge approaches or train coarse-grained reward models, lacking fine-grained requirement-adherence reward modeling. To address these issues, we propose a fine-grained evaluation pipeline WEval for writing reward models and a fine-grained reinforcement learning training framework WRL. The evaluation data of WEval covers multiple task categories and requirement types, enabling systematic evaluation of writing reward models by measuring the correlation between the rankings of the reward model and gold rankings. WRL constructs positive and negative samples by selectively dropping instruction requirements, allowing for more precise reward model training. Experiments show that our models achieve substantial improvements across various writing benchmarks and exhibit strong generalization. The code and data are publicly available at \\href{https://github.com/Rainier-rq1/From_Coarse_to_Fine}{https://github.com/Rainier-rq1/From\\_Coarse\\_to\\_Fine}.","url_abs":"https://arxiv.org/abs/2604.27453","url_pdf":"https://arxiv.org/pdf/2604.27453","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2604.27453","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2604.27453"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/Rainier-rq1/From_Coarse_to_Fine","reach":null}],"summary":{"ran":9},"by_repo_kind":{"found_in_text":{"samples":9,"ran":9,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":9,"samples":[{"code_sha256_prefix":"d197da35ee544f75","entry":"conflict_make","repo":"Rainier-rq1/From_Coarse_to_Fine","repo_kind":"found_in_text","path":"WRL/verl/modules/instructions_registry.py","file_url":"https://github.com/Rainier-rq1/From_Coarse_to_Fine/blob/HEAD/WRL/verl/modules/instructions_registry.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d197da35ee544f75"}},{"code_sha256_prefix":"7da4354e2c6f6c2c","entry":"extract_score","repo":"Rainier-rq1/From_Coarse_to_Fine","repo_kind":"found_in_text","path":"WEval/WritingBench-Critic.py","file_url":"https://github.com/Rainier-rq1/From_Coarse_to_Fine/blob/HEAD/WEval/WritingBench-Critic.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7da4354e2c6f6c2c"}},{"code_sha256_prefix":"a2fd3492b9408427","entry":"extract_score","repo":"Rainier-rq1/From_Coarse_to_Fine","repo_kind":"found_in_text","path":"WEval/llm_judge.py","file_url":"https://github.com/Rainier-rq1/From_Coarse_to_Fine/blob/HEAD/WEval/llm_judge.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a2fd3492b9408427"}},{"code_sha256_prefix":"2cf8ad720a17ab45","entry":"generate_messages","repo":"Rainier-rq1/From_Coarse_to_Fine","repo_kind":"found_in_text","path":"WEval/llm_judge.py","file_url":"https://github.com/Rainier-rq1/From_Coarse_to_Fine/blob/HEAD/WEval/llm_judge.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2cf8ad720a17ab45"}},{"code_sha256_prefix":"20e47449e57dcdc5","entry":"infer_group_size_from_filename","repo":"Rainier-rq1/From_Coarse_to_Fine","repo_kind":"found_in_text","path":"WEval/WritingBench-Critic.py","file_url":"https://github.com/Rainier-rq1/From_Coarse_to_Fine/blob/HEAD/WEval/WritingBench-Critic.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"20e47449e57dcdc5"}},{"code_sha256_prefix":"efd26ef6f48bb9be","entry":"position_consistency","repo":"Rainier-rq1/From_Coarse_to_Fine","repo_kind":"found_in_text","path":"WEval/cal_corr.py","file_url":"https://github.com/Rainier-rq1/From_Coarse_to_Fine/blob/HEAD/WEval/cal_corr.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"efd26ef6f48bb9be"}},{"code_sha256_prefix":"35823a35719c0bdf","entry":"process_question","repo":"Rainier-rq1/From_Coarse_to_Fine","repo_kind":"found_in_text","path":"WEval/WritingBench-Critic.py","file_url":"https://github.com/Rainier-rq1/From_Coarse_to_Fine/blob/HEAD/WEval/WritingBench-Critic.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"35823a35719c0bdf"}},{"code_sha256_prefix":"34d346853108011e","entry":"split_into_sentences","repo":"Rainier-rq1/From_Coarse_to_Fine","repo_kind":"found_in_text","path":"WRL/verl/modules/instructions_util.py","file_url":"https://github.com/Rainier-rq1/From_Coarse_to_Fine/blob/HEAD/WRL/verl/modules/instructions_util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"34d346853108011e"}},{"code_sha256_prefix":"a91c18341292d50e","entry":"unpad_dataproto","repo":"Rainier-rq1/From_Coarse_to_Fine","repo_kind":"found_in_text","path":"WRL/verl/verl/protocol.py","file_url":"https://github.com/Rainier-rq1/From_Coarse_to_Fine/blob/HEAD/WRL/verl/verl/protocol.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a91c18341292d50e"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}