{"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-2608-30399","title":"SemPOI-RL: Aligning LLM Semantic Reasoning for Interpretable Out-of-Town POI Sequential Generation","arxiv_id":"2608.30399","date":"2026-08-31","proceeding":null,"authors":["Yunqi Liu","Yang Zhang","Ruixing Zhang","Liangzhe Han","Yi Qiao","Tongyu Zhu","Leilei Sun"],"abstract":"Large language models (LLMs) exhibit strong semantic reasoning and open-ended generation abilities, but aligning these abilities with structured sequential generation remains challenging. This challenge is particularly evident in out-of-town (OOT) POI sequence generation, where a model must infer transferable travel intent from a user's hometown behaviors, adapt to cross-city interest drift, and generate a coherent destination trajectory under structural constraints. Existing approaches either rely on latent ID-based transfer with limited interpretability or directly use LLMs for sequence generation without explicitly grounding inferred semantics into position-aware predictions. To address this gap, we propose SemPOI-RL, a framework that aligns LLM semantic reasoning with structured sequence generation for interpretable OOT recommendation. Specifically, we first fine-tune an LLM to infer destination-oriented travel styles from users' hometown trajectories, using natural language as an interpretable semantic intermediate. We then introduce a Semantic POI Alignment Module (SPAM) to ground these inferred styles into a style-conditioned masked autoencoder for position-aware trajectory generation. Finally, we apply reinforcement learning with recommendation-oriented rewards to align LLM-generated styles with downstream sequence quality. Experiments on two real-world datasets show that SemPOI-RL consistently outperforms both traditional recommenders and direct LLM baselines, while providing interpretable style attribution across different phases of a trip. The code is available at https://github.com/Wind-Flipped/SemPOI-RL .","url_abs":"https://arxiv.org/abs/2608.30399","url_pdf":"https://arxiv.org/pdf/2608.30399","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=2608.30399","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2608.30399"}},"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/Wind-Flipped/SemPOI-RL","reach":{"status":"ok"}}],"summary":{"unverified":12},"by_repo_kind":{"found_in_text":{"samples":12,"ran":0,"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":12,"samples":[{"code_sha256_prefix":"57a8d6752075da4a","entry":"collate_fn","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/utils.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"57a8d6752075da4a"}},{"code_sha256_prefix":"285797e49d40b212","entry":"count_repetition_percentage","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/metrics.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/metrics.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"285797e49d40b212"}},{"code_sha256_prefix":"49807bc3c4da0a97","entry":"f1_score","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/metrics.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/metrics.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"49807bc3c4da0a97"}},{"code_sha256_prefix":"8feab5efeacd194d","entry":"filt_params","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/utils.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8feab5efeacd194d"}},{"code_sha256_prefix":"545a3b4cc140e32c","entry":"pairs_f1_score","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/metrics.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/metrics.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"545a3b4cc140e32c"}},{"code_sha256_prefix":"779a4ee0a33d4cdd","entry":"random_choice_by_probability","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/trainer.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/trainer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"779a4ee0a33d4cdd"}},{"code_sha256_prefix":"d926128d27dcb127","entry":"random_split","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/data.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/data.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d926128d27dcb127"}},{"code_sha256_prefix":"91a741202461da7b","entry":"select_top_p_indices","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/trainer.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/trainer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"91a741202461da7b"}},{"code_sha256_prefix":"e9f89fa9674bbe4e","entry":"t2v","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/ARmodel.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/ARmodel.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e9f89fa9674bbe4e"}},{"code_sha256_prefix":"3de9b9547d8e26e8","entry":"top_n_recommendation","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/trainer.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/trainer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3de9b9547d8e26e8"}},{"code_sha256_prefix":"7d5b342b449538c2","entry":"travel_style_length_reward_func","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/LLMs.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/LLMs.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7d5b342b449538c2"}},{"code_sha256_prefix":"72daef44c9b956d8","entry":"travel_style_similarity_reward_func","repo":"Wind-Flipped/SemPOI-RL","repo_kind":"found_in_text","path":"code/LLMs.py","file_url":"https://github.com/Wind-Flipped/SemPOI-RL/blob/HEAD/code/LLMs.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"72daef44c9b956d8"}}]},"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_daily_20260901.json"},"syntology_extracted_results":null}